角度
2 的初学者,目前对这一切感到困惑。
我有一个函数,当另一个返回 true 或等待半秒后需要运行。
private myFunction(details: Stuff) {
if (this.okToProceed(details))
{
this.doStuff(details);
}
}
如果无法继续,我想在 100 毫秒后重试,但如果我已经等待了 500 毫秒,那么我无论如何都想做一些事情。
我一直在搞乱 setTimeout 和 setInterval,并试图对 okToProceed 函数进行可观察,但我一无所获。
有一些递归(递归超时直到它的okToContinue(:
private myFunction(details: Stuff, i=0) {
if (i>=5 || this.okToProceed(details)) {
return this.doStuff(details);
}
setTimeout(this.myFunction.bind(this),100,i+1);
}
或者使用一些花哨的 ES7 做真正酷的异步东西(不需要递归检查(:
private async myFunction(details: Stuff) {
if (await this.okToProceed(details)) {
return this.doStuff(details);
}
}
okToContinue必须返回如下承诺:
okToProceed(details){
return Promise.resolve(true);
}