在节点中异步调用后设置对象属性

时间:2015-06-04 02:58:51

标签: node.js callback singleton node-modules

如何创建一个nodejs模块,该模块将一个post请求发送到url并返回一个对象,该对象的data属性被设置为post请求返回的数据?

var client = require('node-rest-client').Client();

module.exports = (function(){
    var instance;

    function createInstance(){
        client.post(url,function(data){
            //set instance.data = data OR
            // return function that lets me access a private property 'data' set to data returned in this callback
        });
    }

    return {
        Cloud : function(){
            if(!instance){
                instance = createInstance();
            }

            return instance;
        }
    }
})

编辑:

基本上当我调用上面的模块并执行Cloud函数时:

var cloud = require('module')。Cloud(); 的console.log(cloud.data); //应该给我从邮寄请求中收到的数据。 //我也想使用模块模式执行此操作,并在模块中使用post请求。

1 个答案:

答案 0 :(得分:0)

您可以使用承诺,例如:

function postReq() {
    return new Promise(function(resolve, reject) {
       client.post(url, function(data) {
           resolve(data);
       })
    });
}

postReq()
.then(function(data) {
  // Do whatever you want with the data returned from client.post
  console.log(data);  
})