[英]Async function but Await doesn't work in NodeJS
这是我的 function...
exports.createSomeFunc = async (param1, callback) => {
for (var i = 0; i < 10; i++) {
await anotherFunc(param2, function (err, result, request, response) {
console.log(result + i);
});
}
})
出于某种原因,我得到“ SyntaxError: await is only valid in async function ”指向 Await 行。 我错过了什么?
有人问我想做什么? 我试图让 for 循环在 function 等待,直到它完成,然后再继续下一次迭代。 这是另一个例子:
exports.anotherFunc = (parm, callback) => {
for (var i = 0; i < 5; i++) {
asyncForEach();
console.log(i);
}
}
async function asyncForEach () {
console.log("in");
await setTimeout(function () {
console.log("out");
}, 100);
}
此代码主体返回以下内容:
0
in
1
in
2
in
3
in
4
out
out
out
out
out
所以 For 循环再次继续。 如何让 FOR 循环等待以下结果:
1
in
out
2
in
out
...
您不是在等待 setTimeout 完成。 如果要在 for 循环的每次迭代中等待每个 setTimeout 调用完成。 您应该在 setTimeout 中使用 promise 并仅在执行回调时解析。
const myFun = async(parm, callback) => { for (var i = 0; i < 5; i++) { console.log(i); await asyncForEach(); } } function asyncForEach() { return new Promise((resolve) => { console.log("in"); setTimeout(function() { console.log("out"); return resolve(); }, 100); }) } myFun();
await 用于promise 。
const anotherFunc = async (oarams, callback) => { for (var i = 0; i < 5; i++) { await asyncProcess(); console.log(i) } } function asyncProcess() { return new Promise(async (resolve) => { console.log("in"); await delay(100) resolve(true) }) } const delay = ms => new Promise((resolve) =>setTimeout(() => { console.log("out") resolve(true) }, ms)); anotherFunc();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.