【发布时间】:2021-11-11 21:58:00
【问题描述】:
我创建了这个小代码来重现我在应用程序中遇到的错误:
const async = require("async");
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
const parallels = [];
for (let i = 0; i < 2; i++) {
parallels.push(async function (callback) {
const randomSleepTime = Math.ceil(Math.random() * 10000);
await sleep(randomSleepTime);
callback(randomSleepTime);
});
}
async.parallel(parallels, function (err, results) {
console.log(err);
console.log(results);
});
完成后我收到此错误:TypeError: callback is not a function
究竟为什么会发生这种情况?
【问题讨论】:
-
删除异步。回调已经是异步的。
-
你为什么使用 async.js 而不是 promises?
-
@zyrup 我需要它在函数内运行 await ,该函数将与其他函数并行触发 (
await sleep()) -
@Bergi 有没有什么办法可以通过 Promise 实现并行运行具有 await 的循环?如果您能分享一个链接,将不胜感激,因为我似乎找不到任何东西。
-
@CedricHadjian 在你的循环中创建一个promise数组,然后使用
Promise.all
标签: javascript node.js asynchronous async.js