gpt4 book ai didi

javascript - 在 JavaScript (Node.js) 中启动/停止后台工作程序

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:29 24 4
gpt4 key购买 nike

在我的 JavaScript 代码中,我有一些函数,我称之为“worker”,它检查它是否已启动并执行一些工作

class Application
{
async runWorker()
{
while (true)
{
while (!this.isStarted)
{
await new Promise(resolve => setTimeout(resolve, 1000));
}

//do some work
this.DoWork();
}
}
}

我通过简单地调用启动应用程序来运行工作程序

this.runWorker();

并将 this.isStarted 设置为 truefalse 来启动或停止它。

这工作正常,但有一些明显的缺点:当 this.isStartedfalse 更改为 true 时,可能需要长达一秒(1000ms)的时间才能调用 this.DoWork()

JavaScript 中是否有一种机制可以允许立即启动和停止工作线程?或者可能是一种以某种方式重写此代码的方法?

例如,在 C++ 中,我会创建一个单独的线程,该线程在工作线程停止时休眠,并使用所谓的“事件同步原语”,但我不知道如何在 JavaScript (node.js) 中实现此场景。

最佳答案

您可以使用一个标志来指示循环应该继续。然后直接调用循环函数:

  const app = {
run: false,
async doWork() {
if(this.run) return; // Don't run twice
this.run = true;
while(this.run) {
await Library.stuff();
}
},
cancel() { this.run = false; },
};

app.doWork();
// somewhen
app.cancel();

关于javascript - 在 JavaScript (Node.js) 中启动/停止后台工作程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578143/

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