我想等到承诺完成后再继续我的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
}
如果有人能帮助我,我们将不胜感激。
答案 0 :(得分:-1)
var p = promiseReturnedFromAFunction();
var time = new Date().getTime();
var user = 'undefined';
p.then(() => {
while(user === 'undefined' && Math.abs(time - new Date().getTime()) < 10000) {
if(somecondition) {
user='user';
break;
}
}
});
我认为你倒了。您希望等待承诺解决,然后循环执行条件检查以确保用户已设置或时间已过。
答案 1 :(得分:-1)
我不清楚你想要实现的行为是什么。是否尝试确定一个值,如果不能,则每X秒重试一次?每隔X秒刷新一次值?
我能给出的唯一直接建议是,一旦你必须等待一个承诺,你通常需要/希望继续将其与其他承诺链接并解决。你不想试图“阻止”承诺打破它。所以你想要解析using (serverStream = new NetworkStream(mySocket))
{
byte[] outStream = System.Text.Encoding.ASCII.GetBytes("help");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
}
然后在解析中循环,或者你应该反转逻辑并编写一个循环来检查p
并且只解析somecondition
一次真。