【发布时间】:2021-03-15 02:53:05
【问题描述】:
我目前正在使用支持 ES2017 异步的 async.js v2.3.0。
我试图弄清楚为什么返回承诺的函数doSomething 在 IIEF 中有效,但 doSomething2 不被尊重。是因为doSoomething2 是一个异步函数,但并不完全运行“异步”代码吗?我觉得我在这里遗漏了一些东西。
function promiseTimeOut() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(20);
}, 1000);
})
}
function doSomething() {
return new Promise((resolve, reject) => {
async.retry({
times: 5,
interval:(retryCount)=>{ return 50 * Math.pow(2, retryCount); }
}, async () => {
return await promiseTimeOut();
}, (err, result) => {
resolve(result);
});
})
}
async function doSomething2() {
async.retry({
times: 5,
interval:(retryCount)=>{ return 50 * Math.pow(2, retryCount); }
}, async () => {
return await promiseTimeOut();
}, (err, result) => {
return result;
});
}
// main function
(async () => {
async.series([
(callback) => {
callback(null, 1);
},
async () => {
return await doSomething();
},
async () => {
// doesn't get waited on, returns undefined right away
return await doSomething2();
}
], (err, result) => {
// result: 1, 20, undefined
console.log(result);
});
})()
【问题讨论】:
标签: node.js async-await async.js