gpt4 book ai didi

javascript - 如何在 NodeJS 中运行无限阻塞进程?

转载 作者:行者123 更新时间:2023-12-01 01:08:16 24 4
gpt4 key购买 nike

我在 Express 中有一组 API 端点。其中一个收到请求并启动一个长时间运行的进程,该进程会阻止其他传入的 Express 请求。

我的目标是使这个过程非阻塞。为了更好地理解 Node 事件循环的内部逻辑以及如何正确执行它,我想用我的虚拟长时间运行阻塞函数替换这个长时间运行的函数,该函数将在我向其端点发送请求时启动。

我认为,使虚拟函数阻塞的不同方式可能会导致 Node 以不同的方式管理这些阻塞。

所以,我的问题是 - 如何将基本的阻塞过程作为一个可以无限运行的函数?

最佳答案

您可以使用node-webworker-threads

    var Worker, i$, x$, spin;

Worker = require('webworker-threads').Worker;

for (i$ = 0; i$ < 5; ++i$) {
x$ = new Worker(fn$);
x$.onmessage = fn1$;
x$.postMessage(Math.ceil(Math.random() * 30));
}
(spin = function(){
return setImmediate(spin);
})();

function fn$(){
var fibo;
fibo = function(n){
if (n > 1) {
return fibo(n - 1) + fibo(n - 2);
} else {
return 1;
}
};

return this.onmessage = function(arg$){
var data;
data = arg$.data;
return postMessage(fibo(data));
};
}

function fn1$(arg$){
var data;
data = arg$.data;
console.log("[" + this.thread.id + "] " + data);
return this.postMessage(Math.ceil(Math.random() * 30));
}

https://github.com/audreyt/node-webworker-threads

关于javascript - 如何在 NodeJS 中运行无限阻塞进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412835/

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