gpt4 book ai didi

javascript - 等待NodeJS返回值

转载 作者:行者123 更新时间:2023-12-02 19:22:11 25 4
gpt4 key购买 nike

我有一个 Node 服务器,它可以调用外部模块。我的问题是我需要通过调用模块返回数据,但 Node (非阻塞)根本不等待返回值。有什么解决办法吗?

代码:

Server.js

var value = module.functionA(param);
console.log("Message one %s", value);

Module.js

function callToFunctionInModule(param){
console.log("In func");
return param+2;
}

exports.functionA = function(param){
console.log("Message two");
var returnVal = callToFunctionInModule(param);
return returnVal;
};

输出

Message two
Message one undefined
In func

是否有办法获得以下输出(等待从模块获取返回值,而不使用行中的回调var value = module.functionA(param);

最佳答案

首先,您给出的代码(同步)并不代表实际情况(异步)。如果您想要处理异步内容,您应该做的是使用回调。这就是 Node.js 背后的整个想法 - 事件驱动*ness*。

Server.js

module.functionA(param, function(val) {
console.log("Message one %s", val);
});

Module.js

function callToFunctionInModule(param, cb) {
console.log("In func");
/* some db query */
not_so_magical_async_stuff("blah", function(/* value passed as argument */) {
cb(param + 2 /* or the value passed as an argument to this function */);
}
}

exports.functionA = function (param, cb) {
console.log("Message two");
callToFunctionInModule(param, cb);
};

现在,发生的事情是这样的:传递给 functionA 的函数会传递给 callToFunctionInModule,后者将返回值作为参数进行回调。结果:非阻塞的漂亮代码!相信我,一旦你迷上了这个异步的东西,你就会喜欢它!

关于javascript - 等待NodeJS返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com