Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js中为所需模块创建回调_Javascript_Node.js_Module_Ipc_Child Process - Fatal编程技术网

Javascript 在node.js中为所需模块创建回调

Javascript 在node.js中为所需模块创建回调,javascript,node.js,module,ipc,child-process,Javascript,Node.js,Module,Ipc,Child Process,有没有可能在我自己创建的模块中创建某种回调 我的问题是,我已经为我的应用程序编写了一个模块。在这个模块中完成了一些任务,现在我的主应用程序应该得到一个反馈,模块完成了他的任务 下面描述了我想要的,但当然行不通的东西 //module mymod.js function start() { var done = false; //do some tasks done = true; } exports.done = done; 主应用程序 var mymod = req

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

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

下面描述了我想要的,但当然行不通的东西

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

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

这很简单

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

    callback();
}
虽然我不知道您想要完成什么,但是While循环看起来很可疑。您可能应该投资于npm的异步包

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

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

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

这允许被调用函数退出,并将该函数逻辑的执行推迟到下一次执行

是的,您可以从模块进行回调

这很简单

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

    callback();
}
虽然我不知道您想要完成什么,但是While循环看起来很可疑。您可能应该投资于npm的异步包

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

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

function funcWithCallback(args, callback){      
    process.nextTick(function() {
        //do stuff
        callback();
    });     
}
这允许被调用函数退出,并将该函数逻辑的执行推迟到下一次执行

回调语法:

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

});
回调语法:

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

});

哇,谢谢。我觉得没那么容易:顺便问一下:有没有一种方法可以动态写入模块中使用的变量?@Fidel90我不知道你的意思。另外,我觉得我应该澄清一下node中的异步回调,所以我正在更新我的答案。@Fidel90语言是动态的,所以你可以选择传递和返回任何你喜欢的。哇,谢谢。我觉得没那么容易:顺便问一下:有没有一种方法可以动态写入模块中使用的变量?@Fidel90我不知道你的意思。另外,我觉得我应该澄清一下node中的异步回调,所以我正在更新我的答案。@Fidel90语言是动态的,所以你可以选择传递和返回任何你喜欢的。这是所有答案中我最容易理解的。解决了我的问题,谢谢!这是所有答案中我最容易理解的。解决了我的问题,谢谢!