2015-06-04 1 views
0

Как создать модуль nodejs, который отправляет запрос на отправку URL-адреса и возвращает объект, для которого свойство данных установлено как данные, возвращаемые из запроса на отправку?Установить свойство объекта после асинхронного вызова в узле

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; 
     } 
    } 
}) 

EDIT:

В принципе, когда я называю выше модуль и выполнить функцию Cloud:.

вар облако = требуется ('модуль') облако(); console.log (cloud.data); // должен давать мне данные, полученные из почтового запроса. // ТАКЖЕ Я хочу сделать это, используя шаблон модуля, с запросом на отправку внутри модуля.

+0

Вы хотите, чтобы получить некоторые данные по HTTP POST на конкретный URL? Какие возвращаемые данные? JSON, XML и т. Д.? –

+1

Вы не можете напрямую вернуть результат асинхронной операции из своей функции модуля. Вместо этого вы можете передать вызывающему абоненту обратный вызов, который будет вызываться с результатом операции async, или вы можете вернуть обещание, которое будет разрешено с результатом, когда операция async завершится. – jfriend00

+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); 
}) 

 Смежные вопросы

  • Нет связанных вопросов^_^