【发布时间】:2017-09-07 01:53:49
【问题描述】:
我想等到一个承诺完成后再继续我的 for 循环。请参阅下面的类似代码。照原样,循环将运行多次并运行所有承诺,但这对我的应用程序来说并不理想。我需要程序运行while循环,运行promise,等待解决,检查是否已经过了10秒或者设置了用户变量,如果没有,再次运行。
var p = promiseReturnedFromAFunction();
var time = new Date().getTime();
var user = 'undefined';
while(user === 'undefined' && Math.abs(time - new Date().getTime()) < 10000) {
p.then(() => {
if(somecondition) {
user='user';
break;
}
})
//Code should wait here until the above promise is done before continuing
}
如果有人能帮我解决这个问题,将不胜感激。
【问题讨论】:
-
你能把你的代码放在回调里面吗?
-
您能详细说明一下吗?我应该把什么代码放在哪里?
-
p.then(() => { if(somecondition){ } /*把你的代码放在这里*/ }) //不在这里 }
-
一个承诺只会解决一次。期望它的解析值由于调用 .then 而改变,而在两者之间没有任何其他操作会改变
p是没有意义的。 -
var p = promiseReturnedFromAFunction() 每次调用可能会导致不同的值
标签: javascript while-loop promise