我是nodejs的新手。 在我的程序中,我需要解决一个长时间工作的异步问题。 我尝试了我的代码:
function testAsync(callback){
//do long-work
for(var i=0;i<1000000000;i++){
//do-nothing, just pseudo a long work
}
//callback
callback();
}
testAsync(function(){
console.log("test");
});
console.log('main');
但是当我运行 testAsync 时,“test”始终在“main”之前打印,这意味着长时间工作同步运行。 那么,如何以异步方式运行长时间工作?
编辑
https://www.dropbox.com/s/32b0nwwr6r0x2zk/jsonschemavalidator.js?dl=0
我创建了一个 validateAndConvert 函数来验证客户端请求的输入。我希望它是异步运行的,但似乎它是同步运行的
最佳答案
how do I run long-work in async?
您可以安排异步启动的工作,但是当稍后启动时,它仍然会占用 Node 运行 JavaScript 代码的唯一线程。也就是说,您将稍后而不是现在阻塞线程。同步工作就是同步工作。
假设这不是您想要做的,您有两个主要选择:
将工作分解为更小的部分,并异步安排每个部分,这样您就可以在处理这些工作时散布其他操作。
将工作卸载到 child process .
关于javascript - 制作一个长时间工作的异步nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43063081/