对于循环,然后在每次迭代之后,更新" async / await"的结果。

时间:2018-03-23 04:14:09

标签: javascript node.js loops asynchronous async-await

循环后,如何更新" await"的结果?方框?

EX:

for (let i = 0; i < 5; i++){
       let thing = await ( foo => {
       return thing;     // thing returns 15.
    });

   for (let j = 0; i < thing; i++){
       //will loop 15 times the first time (out of 5 times because of outer loop)
       //want to change value of thing to 9, so the next time it loops 9 times
   }
}

在内循环之后,我期待流程返回等待阻止并重新评估该值或执行。但这似乎并没有发生,因为返回价值不会改变。

我想东西第一次返回15,然后循环15次。在外循环的下一次迭代中,我希望 thing 返回9,所以内循环9次。

编辑:抱歉,每个人都写得正确,问题来自另一部分代码。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

你在这里定义一个函数:

await ( foo => {
   return thing;     // thing returns 15.
});

但你实际上从未调用过该函数。您可以使用以下内容来调用它:

await ( foo => {
   return thing;     // thing returns 15.
})()

...但是很难理解为什么要创建一个函数来返回一个值。

此外,在第二个for循环中,您定义j,然后比较并增加i。这很难推理,我认为这可能是一个错字。

答案 1 :(得分:0)

你只是定义一个函数而不是调用它。并且j循环看起来很可疑

let thing = await ( foo => {
  return thing;     // thing returns 15.
})();

我认为这就是你想要做的。虽然不完全确定

let thingArr = [15,9]
for (let i = 0; i < 5; i++){

   let thing = await ( foo => {
     return thingArr[i];     // thing returns 15.
   })();

   for (let j = 0; j < thing; j++){
       //will loop 15 times the first time (out of 5 times because of outer loop)
       //want to change value of thing to 9, so the next time it loops 9 times
   }
}