我有一个数组,对于该数组的每个元素,我需要fetch
一些数据(取决于元素)并将该数据添加到数组中的元素。
为了举个例子,我将模拟fetch
带有 Promise(在现实生活中,这将是网络服务的答案):
let p = new Promise((resolve, reject) => resolve('x'))
let a = ['a', 'b']
a = a.map(x => p.then(y => x + y))
console.log(a)
我期望的是第一个元素(a
) p
被调用,并在解析后将结果添加到a
(给予ax
)。同样适用于b
.
最终我期待一个新的数组['ax', 'bx']
.
我得到的是一系列 Promise
作为 Promise 的新手(我觉得理论上很棒),我很难理解这里出了什么问题。是否可以合并.map()
以及其中的异步操作?
我期待一个新的数组['ax', 'bx']
,但我得到的是一系列 Promise
这正是Promise.all是为.当然,它不会生成一个普通数组,而是生成一个承诺,但是当您执行任何异步操作时,您无法避免这种情况。
const promises = a.map(x => p.then(y => x + y))
Promise.all(promises).then(console.log, console.error)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)