繁体   English   中英

异步 function 但等待在 NodeJS 中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM