如何按顺序 运行 这段代码并在节点 js 中得到结果
How to run this code in sequential way and get the result in node js
这个结果总是空的,因为它甚至在异步调用完成之前就返回了
function(myList) {
let result = []
myList.forEach(async function(element)) {
//api call
result.push(status)
}
return result
}
您不能将 async
await
与 forEach 循环一起使用。将 map
与承诺感知的 Promise.all
或 for of
循环一起使用。例如:
const myList = ['abc', 'def'];
for (const foo of myList) {
const result = await someResultfromApi;
result.push(element);
}
return result;
数组方法不接受异步函数,因此,在这种特殊情况下,您应该使用基本循环
function (myList) {
let result = [];
for (let element: myList) {
//api call with the await
result.push(status);
}
return result;
}
或者你可以使用reduce,如果你想使用数组原生函数,它看起来像这样
function (myList) {
return myList.reduce(
(prev, element) => {
return prev.then(result => {
return http.get(/*some thing with the element*/).then(res => {
result.push(res);
return result;
})
});
},
Pormise.resolve([]));
}
这个结果总是空的,因为它甚至在异步调用完成之前就返回了
function(myList) {
let result = []
myList.forEach(async function(element)) {
//api call
result.push(status)
}
return result
}
您不能将 async
await
与 forEach 循环一起使用。将 map
与承诺感知的 Promise.all
或 for of
循环一起使用。例如:
const myList = ['abc', 'def'];
for (const foo of myList) {
const result = await someResultfromApi;
result.push(element);
}
return result;
数组方法不接受异步函数,因此,在这种特殊情况下,您应该使用基本循环
function (myList) {
let result = [];
for (let element: myList) {
//api call with the await
result.push(status);
}
return result;
}
或者你可以使用reduce,如果你想使用数组原生函数,它看起来像这样
function (myList) {
return myList.reduce(
(prev, element) => {
return prev.then(result => {
return http.get(/*some thing with the element*/).then(res => {
result.push(res);
return result;
})
});
},
Pormise.resolve([]));
}