异步等待仅与promise一起使用吗?

时间:2019-10-24 12:13:56

标签: javascript promise async-await

我正在使用javascript。

我的问题来自这种情况:我有一个大数组正在映射,

let myNewArray = myLargeArray.map(someFuntion)
console.log(myNewArray)

映射是否可能花费太长时间并且可能记录了undefined?那么我应该使用async-await还是仅用于promise?

2 个答案:

答案 0 :(得分:2)

  

映射是否可能花费太长时间

“太长”是主观的。虽然花费时间不会对您最终获得的价值产生任何影响。

  

可能会记录未定义的内容?

map总是返回一个数组,所以没有。

尽管该数组可能包含未定义的值。

  

那么我应该使用async-await还是仅用于promise?

您只能有用地等待诺言。

map将返回一个数组,因此您无法有效地等待它。

如果someFunction返回一个诺言,那么map将返回一个诺言数组,您可以将其与Promise.all包装在一起,该数组将返回一个诺言,如果您要登录则可以等待解析值数组,而不是承诺数组。

答案 1 :(得分:1)

地图是同步的。
它接受回调函数(someFuntion),并始终创建一个新数组。
回调函数(someFuntion)不是事件驱动的。
它按顺序一次应用于数组中的每个元素。
您将始终收到一个数组,而不是未定义的。 但是返回数组中的值将取决于您提供的要映射的回调函数。
如果someFuntion不返回任何内容,则将得到未定义的数组。
如果返回promise,则可以解决的promise数组。 Promise.all