我正在使用javascript。
我的问题来自这种情况:我有一个大数组正在映射,
let myNewArray = myLargeArray.map(someFuntion)
console.log(myNewArray)
映射是否可能花费太长时间并且可能记录了undefined
?那么我应该使用async-await还是仅用于promise?
答案 0 :(得分:2)
映射是否可能花费太长时间
“太长”是主观的。虽然花费时间不会对您最终获得的价值产生任何影响。
可能会记录未定义的内容?
map
总是返回一个数组,所以没有。
尽管该数组可能包含未定义的值。
那么我应该使用async-await还是仅用于promise?
您只能有用地等待诺言。
map
将返回一个数组,因此您无法有效地等待它。
如果someFunction
返回一个诺言,那么map
将返回一个诺言数组,您可以将其与Promise.all
包装在一起,该数组将返回一个诺言,如果您要登录则可以等待解析值数组,而不是承诺数组。
答案 1 :(得分:1)
地图是同步的。
它接受回调函数(someFuntion)
,并始终创建一个新数组。
回调函数(someFuntion)
不是事件驱动的。
它按顺序一次应用于数组中的每个元素。
您将始终收到一个数组,而不是未定义的。
但是返回数组中的值将取决于您提供的要映射的回调函数。
如果someFuntion
不返回任何内容,则将得到未定义的数组。
如果返回promise,则可以解决的promise数组。 Promise.all
。