2014-09-05 163 views
0

我是新来的节点,努力实现一个目标,我可以将一个对象实例返回给调用方法。在nodejs中通过需要传递对象实例

请注意:对象实例正在创建一个非阻塞回调,并且我想将这个对象传递回主模块,从这里被调用,我可以在同一个文件(文件b .js),但不在主文件(文件a.js)中使用require。在文件

示例代码b.js

var object1 = require('object1.js') 
    function createobject(){ 
    object1.someFunction(err,function(myobj){ 
     //retrun myobj to the caller function; 
     return myobj; 
    }); 
    } 
module.exports = createobject; 

在a.js

var b = require('b.js'); 
var myobj = b.createObject(); 
//call some method of myobj 

请建议的专家, 谢谢, 和Manish邦萨尔

回答

2

这是一个新典型问题。你试图从async函数返回一些东西 - 这是行不通的。使用回叫或承诺代替:

file b.js

function createobject(next){ 
    object1.someFunction(err,function(myobj){ 
     //retrun myobj to the caller function; 
     next(myobj); 
    }); 
} 

file a.js

b.createObject(function (myobj) { 
    // call some method of myobj 
}); 
+0

+1感谢,这是非常快的,所以只是想确认是否有在这个任何其他方式,或者这是唯一的选择从async返回的东西..但非常感谢:) – 2014-09-05 08:37:08

+0

是的,这是唯一的方法。除非您使用[生成器](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield)或[promise](https://developer.mozilla.org/en-美国/文档/网络/的JavaScript /参考/ Global_Objects /无极) – 2014-09-05 11:58:36