如何等到函数为真或在角度 2 中经过一段时间


角度

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);
}

最新更新