带有回调函数的Typescript计时器,我可以等待
我对打字脚本比较陌生。带有回调函数的Typescript计时器,我可以等待,typescript,asynchronous,Typescript,Asynchronous,我对打字脚本比较陌生。 我正在尝试创建一个计时器(或使用一个随时可用的计时器,如果您知道的话),它允许我在每个间隔执行多次操作(例如:在数组中的每个元素上执行淡入淡出等UI操作),并给我一个可以等待的结束标志。 到目前为止,我得到了: function delay(delay: number) { return new Promise(r => { setTimeout(r, delay); }) } type timerCallback = (args:
我正在尝试创建一个计时器(或使用一个随时可用的计时器,如果您知道的话),它允许我在每个间隔执行多次操作(例如:在数组中的每个元素上执行淡入淡出等UI操作),并给我一个可以等待的结束标志。
到目前为止,我得到了:
function delay(delay: number) {
return new Promise(r => {
setTimeout(r, delay);
})
}
type timerCallback = (args: any, counter: number) => void;
class Timer {
private _callback: timerCallback;
constructor(callback: timerCallback) {
this._callback = callback;
}
async doTimer(args: any, counter: number = 3, delayMs: number = 1000) {
for (let i = 0; i < counter; i++) {
await delay(delayMs);
counter = counter - 1;
this._callback(args, i);
//console.log(this.counter);
}
}
}
但我需要等待计时器上的所有迭代都结束…你知道我该如何实现这一点吗?等待showTimer.doTimer的承诺,无论是rusing
等待
(在异步
函数中)还是它的然后
捕获
方法(在非异步
函数中)
您的myMethod
是一个非async
函数,因此:
showTimer.doTimer(/*...*/)
.then(() => {
// It's done now
})
.catch(() => {
// An error occurred
});
您的
doTimer
承诺将永远不会被拒绝,因此从技术上讲,您可以放弃catch
处理程序。但很多时候,你看到人们在承诺可能被拒绝的情况下放弃承诺,以至于我不敢给出一个不遵守承诺规则的例子:你应该归还承诺链或处理拒绝
showTimer.doTimer(/*...*/)
.then(() => {
// It's done now
})
.catch(() => {
// An error occurred
});