【发布时间】:2016-12-30 20:21:34
【问题描述】:
这个 Javascript 函数似乎以异步方式使用 while 循环。 在异步条件下使用while循环是否正确?
var Boo;
var Foo = await getBar(i)
while(Foo) {
Boo = await getBar3(i)
if (Boo) {
// something
}
Foo = await getBar(i)
i++
}
我认为它的作用是:
var Boo;
var Foo;
getBar(i).then( (a) => {
Foo = a;
if(Foo) {
getBar3(i).then( (a) => {
Boo = a
if(Boo) {
//something
i++;
getBar(i).then( (a} => { Repeat itself...}
}
}
}
})
如果这完全是错误的,您能否展示另一种使用异步等待 + while 循环的方法?
谢谢!!
【问题讨论】:
-
仅供参考,async/await 不是 ES 6 的一部分。
-
await 转换为状态机。您可以拥有许多已编写的小型状态机(很难推理),也可以拥有一个更大的状态机(例如 C# 所做的)。
-
“正确的方法”是什么意思?如果此代码符合您的要求,那么它是正确的。
-
我无法尽可能多地测试它,它在我对它应该做什么的解释中按预期工作,但不确定这是否不仅仅是运气。
标签: loops asynchronous while-loop async-await ecmascript-next