WoJ*_*WoJ -2 javascript promise es6-promise map-function
我有一个数组,对于这个数组的每个元素,我需要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)Run Code Online (Sandbox Code Playgroud)
我期望的是第一个元素 ( a)p被调用,并在解析后将结果添加到a(giving ax)。对于b.
最终我期待一个新的数组['ax', 'bx']。
我得到的是一系列 Promises
作为 Promises 的新手(我发现理论上这很棒)我很难理解这里出了什么问题。是否可以在其中组合.map()异步操作?
我期待一个新的数组
['ax', 'bx'],但我得到的是一个 Promises 数组
这正是 Promise.all为此而生的。当然,它不会产生一个普通的数组,而是一个对它的承诺,但是当你做任何异步操作时,你无法避免这种情况。
const promises = a.map(x => p.then(y => x + y))
Promise.all(promises).then(console.log, console.error)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8599 次 |
| 最近记录: |