Javascript 如何等待函数为真或某个时间在angular 2中已过
angular 2的完全初学者,目前对此感到相当困惑 我有一个函数需要在另一个函数返回true或等待半秒钟后运行Javascript 如何等待函数为真或某个时间在angular 2中已过,javascript,angular,Javascript,Angular,angular 2的完全初学者,目前对此感到相当困惑 我有一个函数需要在另一个函数返回true或等待半秒钟后运行 private myFunction(details: Stuff) { if (this.okToProceed(details)) { this.doStuff(details); } } 如果不能继续,我想在100毫秒后再试一次,但如果我已经等了500毫秒,我还是想继续 我一直在摆弄setTimeout和setInterval,试图观察
private myFunction(details: Stuff) {
if (this.okToProceed(details))
{
this.doStuff(details);
}
}
如果不能继续,我想在100毫秒后再试一次,但如果我已经等了500毫秒,我还是想继续
我一直在摆弄setTimeout和setInterval,试图观察okToProceed函数,但我没有取得任何进展。使用一些递归(在okToProceed之前使用timeout递归):
或者使用一些奇特的ES7做真正酷的异步工作(无需递归检查):
okToProceed必须回复如下承诺:
okToProceed(details){
return Promise.resolve(true);
}
谢谢,为什么函数绑定而不是仅仅调用它呢?另外,如果okToProceed永远不是真的,ES7也不会在一段时间后爆发,对吗?@dibs 487调用它会立即执行它,这是我们不希望的。是的,如果承诺以某种方式得到解决,那么第二种情况就会继续。您可以执行setTimeout(reject,500)之类的操作,在ceetain时间之后自动拒绝
private async myFunction(details: Stuff) {
if (await this.okToProceed(details)) {
return this.doStuff(details);
}
}
okToProceed(details){
return Promise.resolve(true);
}