【问题标题】:javascript async/await in a generic loop通用循环中的 javascript async/await
【发布时间】:2017-04-29 04:50:02
【问题描述】:

我想让这个例子https://stackoverflow.com/a/33585993/1973680同步。

这是正确的实现方式吗?

        let times= async (n,f)=>{while(n-->0) await f();} 

        times(5,()=>
               myfunc([1,2,3],err => err)
              )

myfunc 本身就是一个等待各种其他函数的异步函数:

async myfunc(params,cb){

   await a( err => err )
   await b( err => err )
   await c( err => err )

}` 

【问题讨论】:

  • async/await 不会使代码同步。它只是启用了一种更方便的方式来编写异步代码。是的,看起来它应该可以工作(你为什么不试试呢?),虽然我宁愿写async () => await myfunc([1,2,3],err => err)
  • “同步”是什么意思?或者它是一个错字,你的意思是异步的?
  • 您正在传递但未在任何地方使用的 err => err 回调看起来不像 async functions 的正确用法。

标签: javascript loops async-await ecmascript-2017


【解决方案1】:

这是正确的实现吗?

是的。 await 在循环中工作,就像你期望的那样,如果那是你的实际问题。
但是我建议写

async function times(n, f) {
    while (n-- > 0)
        await f();
}

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 2019-07-16
    • 1970-01-01
    • 2016-12-30
    • 2020-05-30
    • 1970-01-01
    • 2021-06-04
    • 2020-08-03
    • 2018-01-12
    相关资源
    最近更新 更多