Node.JS返回回调
Node.JS return out of callback
我使用这个插件管理器https://github.com/c9/architect并创建一个节点模块。我遇到的问题是,我想从我的节点模块向主机应用程序公开一个api。问题是插件管理器使用回调来表示所有插件都已注册。
的例子:在我的主应用程序中,我需要我的api模块,我正在创建
var api = require('apiModule')
在node_modules目录
module.exports = (function apiModule(){
architect.createApp(config, function(err, app){
if(err) throw err;
return app
});
})();
这显然不起作用,但表明我试图将app
的值返回给主应用程序。
如何将app
的值返回到api
变量?
你可以给你的模块传递一个回调:
module.exports = function(callback){
architect.createApp(config, function(err, app){
if(err) throw err;
return callback(app); //you should check if callback is a function to prevent error
});
});
var api = require('apiModule');
api(function(app) {
console.log(app); //you access your app
})
您不是在传递回调,而是创建回调。你的函数也不应该自己执行。
你的代码应该是:
var architect = require('architect');
module.exports = function apiModule(config, callback){
architect.createApp(config, callback);
});
//otherModule
var apiModule = require('apiModule');
var config = require('config');
apiModule(config, function(err, app){
if(err) throw err;
// do something with app
});
如果你正在寻找一个更习惯的api,你已经习惯了。我建议你试试蓝鸟
var architect = require('architect');
var Promise = require('bluebird');
var createApp = Promise.promisify(architect.createApp);
module.exports = function apiModule(config) {
return createApp(config);
}
// Then in your other module
var apiModule = require('apiModule');
apiModule()
.then(function(result) {})
.catch(function(error) {})
我希望这能澄清:)
相关文章:
- 如何使for循环等待回调返回值
- node.js mongojs findOne回调返回错误为null
- 在回调返回错误中带有点的 JSONP
- 从嵌套在函数中的Node.js回调返回对象
- 回调返回响应,但当在API中发送时,响应在节点JS中显示为空白
- 挂起的回调:在每次回调返回之前返回响应
- 当查询返回对象时,Express Mongo回调返回undefined
- 而循环和回调返回不同的结果
- 从Meteor.method中的回调返回值
- jquery getjson 函数:回调返回错误的字符串
- 承诺回调返回承诺
- AJAX 回调返回 0
- 通过回调返回 AJAX
- Javascript 从多个回调返回值
- 从 JavaScript 回调返回一个值
- 从回调返回值
- grunt-从回调返回解析的数据
- Firebase-回调返回[object object]
- Javascript回调返回值
- 当一个promise的resolve回调返回另一个promise时,它是如何工作的