我是第一次使用nodejs(和javascript)编写一些代码,即使在测试了该论坛上有关该主题的代码之后,也无法理解async / await的工作方式。我根本无法理解我在做什么错。
我运行的是节点版本10,并且如上所述,我已经尝试过各种示例,但也无法做我想做的事。
function myFunctionWithCallBack(time){
console.log("Started: " + time);
setTimeout(() => {
console.log("Callback: " + time);
return ("Return: " + time);
}, time)
}
async function executeAsyncTask() {
let value = await myFunctionWithCallBack(2000);
console.log(value);
value = await myFunctionWithCallBack(5000);
console.log(value);
}
executeAsyncTask();
/*
**Actual result:**
Started: 2000
undefined
Started: 5000
undefined
Callback: 2000
Callback: 5000
**Desired result:**
Started: 2000
Callback: 2000
Return: 2000
Started: 5000
Callback: 5000
*/
答案 0 :(得分:0)
正如我在评论中说的那样,async / await适用于Promises,而不适用于回调,后者是另一种类型的异步函数。
您的代码在Promises中将如下所示:
function myFunctionWithCallBack(time){
console.log("Started: " + time);
return new Promise(resolve =>
setTimeout(() => {
console.log("Callback: " + time);
resolve("Return: " + time);
}, time)
)
}
async function executeAsyncTask() {
let value = await myFunctionWithCallBack(2000);
console.log(value);
value = await myFunctionWithCallBack(5000);
console.log(value);
}
executeAsyncTask();