1

是否有可能在我自己创建的模块中创建某种回调?

我的问题是我为我的应用程序编写了一个模块。在这个模块中完成了一些任务,现在我的主应用程序应该得到模块完成任务的反馈。

以下描述了我想要但不会工作的东西......

//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 视频捕获... :( 通过使用模块我没有遇到这个问题,而是我得到了这个一个给它^^

4

2 回答 2

9

是的,您可以从您的模块中获得回调。

这很简单

function funcWithCallback(args, callback){
    //do stuff

    callback();
}

虽然我不知道您要完成什么,但 while 循环看起来很可疑。您可能应该从 npm 购买 async 包。

github上的异步

编辑:我觉得有必要澄清一些事情。虽然上述函数实际上确实打算使用回调而不是返回值,但它并不完全是异步的。

真正的异步方法是做这样的事情:

function funcWithCallback(args, callback){      
    process.nextTick(function() {
        //do stuff
        callback();
    });     
}

这允许被调用的函数退出并将该函数的逻辑的执行推迟到下一个刻度。

于 2013-08-22T13:55:02.343 回答
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

});
于 2013-08-22T13:57:37.867 回答