2017-01-01 4 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] 

Но когда я пытаюсь нажать «Обещания», массив может работать так, как ожидалось.

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]

Смежные вопросы