【发布时间】:2013-09-10 22:42:58
【问题描述】:
一个有点棘手的问题,首先,我有一个插件:
exports.action = function(){
// Running synchronous code
runMyRequest("path/to/url", function(){
// My code is asynchronous
});
}
然后我从一个需求中调用这个插件:
var plugin = require('myplugin')
plugin.action();
// continue stuff
问题:在“继续工作”中有什么方法可以检查“我的代码是异步的”是否正在运行或完成?那么等着呢?
注意:在我的真实代码中插件必须调用回调()。这个问题的目的是在插件的代码忘记调用我的回调()时做点什么
【问题讨论】:
-
我在想像 Java 或 C# 中的 Join() 功能。
-
你不理解闭包。如果未调用回调,则永远不会运行“我的代码是异步的”。问题不在于“它正在运行”还是“它已经完成”,它永远不会运行。节点(和 V8)中没有暴露“线程”,因此不可能有 join()。 Node 允许程序员停止或使服务器崩溃。它不是为处理草率的代码而设计的。基于超时的唯一解决方法是 djbrick 提供的解决方法。
-
@Lucio 是的,我说的是 Join() 以便更好地理解。我在想丑陋的 while/timeout 循环查看 Event Loop 以查看此模块是否有活动
标签: node.js asynchronous