【发布时间】:2018-02-14 20:04:15
【问题描述】:
我有一个数组,对于这个数组的每个元素,我需要 fetch 一些数据(取决于元素)并将这些数据添加到数组中的元素。
举个例子,我将用 Promise 模拟fetch(在现实生活中,这将是一个网络服务的答案):
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']。
我得到的是一组 Promises
对 Promises 很陌生(我觉得理论上很棒)我很难理解这里出了什么问题。 是否可以将.map() 和异步操作结合在其中?
【问题讨论】:
-
是的,绝对可以在地图内执行异步操作。但是,充其量,您将得到的结果是一系列承诺。然后,您必须使用该数组来获得结果。地图无法直接返回结果,因为地图在结果存在之前就返回了。
-
@KevinB:我相信第二个“相关”链接正是我的问题。我还在消化它,但看起来确实如此。谢谢!
标签: javascript promise es6-promise map-function