首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除非执行主代码,否则Node.js回调永远不会触发。

问除非执行主代码,否则Node.js回调永远不会触发。
EN

Stack Overflow用户
提问于 2015-02-22 21:37:16
回答 1查看 91关注 0票数 0

在node.js中,当函数调用之后有一个无休止的循环,函数调用也会将回调函数作为参数,则即使操作完成,回调也不会触发。例如:

代码语言:javascript
复制
database.insert(data, function() {
    //do stuff
})

while(1) {
    //do stuff
}
  • 在上面的例子中,带有"//do the“的回调函数永远不会触发。这使我对node.js被称为异步这一事实感到困惑。如果它在有其他事情要做的时候不能运行回调,那么它怎么会是异步的呢?
  • 如果数据库插入是异步的,即使回调函数需要等待,那么如何提供这种并发性呢?

谢谢。

编辑:打印

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 22:17:14

Node.js是单线程的,所以一次只能做一件事.如果您正在运行一个非常cpu密集型的作业,也许您可以使用child_process在另一个进程中完成它?

否则,您可以将繁重的工作分解为同一个函数的多个调用,并使用process.nextTick(),即:

代码语言:javascript
复制
function compute() {
     // do work here
     process.nextTick(compute);
}

compute();

这将允许事件循环在计算之间处理其他任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28663580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档