gpt4 book ai didi

javascript - Node JS中事件代码的同步执行

转载 作者:行者123 更新时间:2023-11-30 19:19:14 24 4
gpt4 key购买 nike

我在 Node JS 中有一个事件监听器,如下所示。

client.on('collect', async reaction => {
await external.run(reaction, ...);
});

我调用的函数 external.run 返回一个 promise ,大约需要 5 秒才能完成。如果在前一个触发器仍在执行时再次触发此事件(即在它花费的 5 秒之前),它会扰乱我的程序。

有没有办法在运行新的之前等待之前的执行完成?

谢谢。

最佳答案

是的,你想要的在其他语言中被称为 Lock ... JS 本身不提供该机制,但自己编写一个很容易:

 const createLock = () => {
let queue = Promise.resolve();
return task => queue = queue.then(() => task());
};

const externalLock = createLock();

client.on('collect', reaction => externalLock(async () => {
await external.run(reaction, ...);
}));

可以肯定的是,这只是一个人为的例子,您可能希望正确处理错误......或者您只是使用其中一个执行此操作的库

关于javascript - Node JS中事件代码的同步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665027/

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