是否有可能在我自己创建的模块中创建某种回调?
我的问题是我为我的应用程序编写了一个模块。在这个模块中完成了一些任务,现在我的主应用程序应该获得模块完成任务的反馈。
以下描述了我想要但不会做的事情......
//module mymod.js
function start()
{
var done = false;
//do some tasks
done = true;
}
exports.done = done;
主要应用程序
var mymod = require("./mymod.js");
while(!mymod.done)
{
//do some tasks
}
如果有人可以帮助我,我会很高兴。
PS:我尝试了这种情况的子进程(fork),但因为它似乎复制整个过程我不能再访问打开的OpenCV视频捕获...... :(通过使用模块我不会遇到这个问题,而是我得到了这个^^答案 0 :(得分:9)
是的,您可以从模块进行回调。
就像
一样简单function funcWithCallback(args, callback){
//do stuff
callback();
}
虽然我不知道你想要完成什么,但是while循环看起来很可疑。您可能应该从npm投资异步包。
编辑:我觉得有必要澄清一些事情。虽然上面的函数确实打算使用回调而不是返回值,但它并不完全是异步。真正的异步方法是做这样的事情:
function funcWithCallback(args, callback){
process.nextTick(function() {
//do stuff
callback();
});
}
这允许被调用的函数退出并推迟执行该函数的逻辑,直到下一个tick。
答案 1 :(得分:6)
回拨语法:
function start(callback)
{
//do some tasks
callback(data);
}
exports.start = start;
您需要模块的任何地方:
var mymod = require("./mymod.js");
mymod.start(function(data) {
//do some tasks , process data
});