2017-01-01 28 views
0

我有一個值的數組,我想創建一個承諾的數組,以並行調用。但爲什麼地圖功能不起作用?Array.prototype.map不能用於Promise?

let myArray = [1,2,3]; 
myArray.map((n) => { 
    return new Promise((resolve, reject) => { 
     resolve(n); 
    }); 
}); 
console.log(myArray); // [1,2,3] 

但是當我試圖推動Promises數組可以按預期工作。

let myArray = [1,2,3]; 
let pArray = [] 
for(let n of myArray){ 
    pArray.push(new Promise((resolve, reject) => { 
     resolve(i); 
    })); 
} 
console.log(pArray); // [Promise,Promise,Promise] 

回答

2

像這樣做,因爲map不修改數組:

let myArray = [1,2,3]; 
let promiseArray = myArray.map((n) => { 
    return new Promise((resolve, reject) => { 
     resolve(n); 
    }); 
}); 
console.log(promiseArray); 
+0

謝謝,剛剛意識到。你應該在你的答案中編輯結果評論。 – Mengo

2

您需要分配的map結果。

let myArray = [1, 2, 3]; 
 
let pArray = myArray.map((n) => { 
 
    return new Promise((resolve, reject) => { 
 
    resolve(n); 
 
    }); 
 
}); 
 
console.log(pArray); // [Promise,Promise,Promise]