【发布时间】:2019-02-10 11:35:14
【问题描述】:
我有一个 Promise 数组。在将其传递给Promise.all 时,它返回异常响应。好的,这是我想要实现的最小示例。
const promiseChain = [1, 2, 3].map(number => new Promise(resolve, reject) => {
// Calling an function with callback.
getMyObj(number, (err, myObj) => {
if (err) reject(err);
else {
// Comment 1
// Here I'm able to log the desired result both number & myObj.
resolve({ number, myObj });
}
})
});
Promise.all(promiseChain).then((results) => {
results.forEach(result => {
// Comment 2
// Here number is correct for all objects.
// But, myObj is same for all the numbers.
});
});
检查 cmets。我能够代替cmets登录的内容如下,
评论1:
{ number: 1, myObj: {a: 1}}
{ number: 2, myObj: {b: 2}}
{ number: 3, myObj: {c: 3}}
评论2:
{ number: 1, myObj: {c: 3}}
{ number: 2, myObj: {c: 3}}
{ number: 3, myObj: {c: 3}}
在这里,我做错了什么以及如何解决这个问题?
【问题讨论】:
-
您的 if/else 语法有问题,不确定这是否会导致您的问题?
-
将你的 map 方法改为函数而不是箭头语法,我认为这就是问题
-
好吧,我们不知道你在
getMyObj里面做什么。这显然是您的麻烦的根源,而不是您的其余代码。 -
@George 没有解决问题。
-
尝试使用
console.table而不是console.log你可能正在变异一些东西。
标签: javascript callback promise es6-promise