如何解决异步功能,但是Await在NodeJS中不起作用
这是我的功能...
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仅在异步功能中有效”,它指向Await行。我想念什么?
有人问我要做什么?我试图让for循环在函数中等待,直到完成,然后再继续下一次迭代。这是另一个示例:
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完成。如果要等待每个setTimeout调用在for循环的每次迭代中完成。您应该在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();
,
等待用于承诺。
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。