[英]node.js function returns empty
我正在嘗試從循環中訪問array
,但似乎出了點問題。 我錯過了什么? 我該怎么辦?
funcA(){
return new Promise((resp, rej) => {
var list = [1,2,3,4,5];
var array = [];
list.forEach(i => {
funcB(i).then(num => {
array.push(num);
console.log(array) //=> [1,2,3,4,5]
})
});
console.log(array) //=> []
resp(array) //=> []
})
}
funcB(i){
return new Promise((resp, rej) => {
resp(i);
})
}
你可以做這樣的事情。
function funcA(){ var list = [1,2,3,4,5]; return Promise.all( list.map(val => { return funcB(val) }) ) } function funcB(i){ return new Promise((resp, rej) => { resp(i); }) } funcA().then(arr => console.log(arr))
在循環中調用異步函數時,需要等待所有調用執行完畢后才能訪問數組:
funcA(){
return new Promise((resp, rej) => {
var list = [1,2,3,4,5];
var promisesArray = [];
list.forEach(i => {
promisesArray.push(funcB(i));
});
resp(Promises.all(promisesArray));
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.