我最近在 NodeJS 的引擎下挖掘,需要澄清其队列和事件循环。
NodeJS是单线程的,所以如果我有一个函数:findTheMeaningOfLife()
这是同步函数并将按原样调用它,它可能需要一段时间才能得到42
。
但如果我将这个函数包装在Promise
中,它将如何表现呢?例如:
function findTheMeaningOfLifeAsync(){
return new Promise(function(resolve, reject){
try {
var meaningOfLife = findTheMeaningOfLife();
resolve(meaningOfLife);
} catch (error) {
reject(error);
}
})
}
并将调用它,它将被放置在NodeJS(libuv)队列中并在另一个线程中调用吗?如果没有,我怎么能让它真正异步?
提前谢谢。
答案 0 :(得分:0)
首先,让我澄清一下:Node Js不是单线程,它有一个执行线程和几个服务线程(后者用于我/ O操作)。
话虽如此,您提出的代码的典型行为如下:
String date = dayOfMonth + "/" + month + "/" + year + " ?";
处理程序从外部呼叫findTheMeaningOfLifeAsync()
。因此,关于你的主要问题,使用promises将以某种方式监视当前状态并等待解决,然后从保存点恢复。但是,这不涉及使用多线程(因为在这种情况下,I / O操作不包括在内,我假设),而是事件用于提供异步编程。我建议您查看Node Js事件以更深入地了解。我在这里为您提供了一个有用的链接: NodeJs Events