【发布时间】:2017-08-04 18:31:13
【问题描述】:
尝试在angular2中使用setTimeout,我想稍后清除超时。
但是 Angular2 返回的是“ZoneTask”而不是数字
constructor() {
this.name = 'Angular2'
this.timeoutId = setTimeout(() => {
console.log('hello');
}, 2000);
console.log("timeout ID---", this.timeoutId); // Output - ZoneTask {_zone: Zone, runCount: 0, _zoneDelegates: Array[1], _state: "scheduled", type: "macroTask"…}_state: "notScheduled"_zone: Zone_zoneDelegates: nullcallback: function () {cancelFn: nulldata: Objectinvoke: function () {runCount: 0scheduleFn: function scheduleTask(task) {source: "setTimeout"state: (...)type: "macroTask"zone: (...)__proto__: ZoneTask app.ts:24
}
如何使用普通的 setTimeout 或者在 Angular2 中使用 setTimeout 然后 clearTimeout 的首选是什么?
【问题讨论】:
-
尝试不带第一个参数的
clearTimeout(this.timeoutId);,或者您可以使用this.timeoutId.data.handleId获取id -
是的,但为什么我会收到 ZoneTask?如何进行正常的设置超时!
标签: javascript angular settimeout