Array.forEach是异步的吗?

时间:2018-08-30 16:59:22

标签: javascript

2 个答案:

答案 0 :(得分:4)

forEach是同步的。但是,您的回调函数不是。因此forEach会为数组中的每个条目同步调用您的函数,该函数开始。后来,forEach结束很久之后,开始的工作异步完成。

问题在于您的回调是async,而不是forEach是异步的。

通常,当您使用的forEach之类的API对返回值不做任何事情(或不希望将promise作为返回值)时,要么:

  1. 不要将其传递给async函数,或者

  2. 确保在函数本身内处理错误

否则,如果函数出现问题,您将得到未处理的错误。

答案 1 :(得分:1)

似乎您在调用程序中声明了一个async函数,该函数实际上并不关心此类事情forEach。声明一个函数async使其类似于诺言,但是该诺言只有在执行时才有用。

如果您需要实现承诺的forEach,尽管Promise.each已经在Bluebird之类的库中实现了,但是您可以实现。