gpt4 book ai didi

javascript - 具有 async/await 风格函数的 async.queue

转载 作者:行者123 更新时间:2023-12-03 09:32:33 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,该函数从对象数组构建队列,然后通过调用多个函数来处理每个对象。

处理函数是异步函数,在需要排队之前,我使用 async/await 模式实现。我认为这是必要的,因为每个都依赖于前一个的输出,我不想有大量嵌套的 promise.then 的

即以前我有:

await Promise.all(messages.map(async(message) => {
let activity = await activityController.getActivity(message.activityId);
let url = await SMSController.getUrl(message.Token);
let smsSendResult = await SMSController.sendSMS(messageString, activity.mobileNo);
// etc...
}

现在我想做的是:
let queue = async.queue((message, done) => {
let activity = await activityController.getActivity(message.activityId);
let smsSendResult = await SMSController.sendSMS(messageString, activity.mobileNo);
// etc...
}

messages.forEach((message) => {
queue.push(message);
})

我有一个问题,虽然这会导致
SyntaxError: await is only valid in async function
而且我似乎无法完全理解如何克服这个问题。

最佳答案

我在 async 模块中找到了 asyncify 函数,它允许我这样做:

var queue = async.queue(async.asyncify(async (message, done) => {
let url = await SMSController.getUrl(message.token);
// etc...
}

关于javascript - 具有 async/await 风格函数的 async.queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com