Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将.map()与承诺相结合?_Javascript_Promise_Es6 Promise_Map Function - Fatal编程技术网

Javascript 如何将.map()与承诺相结合?

Javascript 如何将.map()与承诺相结合?,javascript,promise,es6-promise,map-function,Javascript,Promise,Es6 Promise,Map Function,我有一个数组,对于该数组的每个元素,我需要获取一些数据(取决于元素),并将这些数据添加到数组中的元素中 举个例子,我将模拟带有承诺的fetch(在现实生活中,这将是Web服务的答案): let p=new Promise((解析,拒绝)=>resolve('x')) 设a=['a','b'] a=a.map(x=>p.then(y=>x+y)) console.log(a)编辑:这里有一个代码,可以按照您希望的方式工作: let p=new Promise((解析,拒绝)=>resolve(

我有一个数组,对于该数组的每个元素,我需要
获取一些数据(取决于元素),并将这些数据添加到数组中的元素中

举个例子,我将模拟带有承诺的
fetch
(在现实生活中,这将是Web服务的答案):

let p=new Promise((解析,拒绝)=>resolve('x'))
设a=['a','b']
a=a.map(x=>p.then(y=>x+y))

console.log(a)
编辑:这里有一个代码,可以按照您希望的方式工作:

let p=new Promise((解析,拒绝)=>resolve('x'))
设a=['a','b']
设c=[]
Promise.resolve(a.map(x=>p.then(y=>c.push(x+y)))。然后(()=>console.log(c))
我期望有一个新的数组,但我得到的却是一个承诺数组

这正是它的用意。当然,它不会产生一个简单的数组,而是对它的一个承诺,但是当你做任何异步的事情时,你不能避免它

const promises = a.map(x => p.then(y => x + y))
Promise.all(promises).then(console.log, console.error)

一个例子是将原来的答案@DrNiocool改大,我还要加一个.catch。我不知道为什么它被否决了——也许那个人可以解释为什么。@DrNio它被否决了,因为它不起作用。在
p
中有一个超时(而不是立即解决),它会崩溃。好的,谢谢您的注意!是的,完全可以在映射内执行异步操作。然而,充其量,你会得到一系列的承诺。然后必须使用该数组才能获得结果。映射不可能直接返回结果,因为映射在结果存在之前返回。相关:Aslo Related:@KevinB:我相信第二个“相关”链接正是我的问题。我还在消化它,但它看起来确实如此。谢谢酷-缺少
.catch
语句,尽管:)看起来clean@DrNio你是说每个承诺链都应该以一个错误处理程序结束?补充。就是这个,谢谢。它还与KevinB评论中的“相关”链接相匹配(我将自己标记为重复),在这样一个小例子中,你为什么会关心这些事情?