2016-08-11 97 views
0

我得到了一个来自我想传递给另一个函数的服务的JSON响应。当我在var parsedData...行上放置一个断点,并在return resp上放置一个断点时,parsedData行首先被击中。在继续使用代码之前,如何“等待”完成请求?如何让一个节点http请求暂停执行直到完成

var data = sendRequest(options); 
var parsedData = parseData(commits); 

var sendRequest = function (options) { 
    var resp = {} 
    var request = https.request(options, function (response) { 
     var body = ''; 
     response.on("data", function (chunk) { 
      body += chunk.toString('utf8'); 
     }); 

     response.on("error", function(e){ 
      console.log(e); 
     }) 

     response.on("end", function() { 
      resp = JSON.parse(body); 
      return resp; 
     }); 
    }); 
    request.end(); 
} 
+0

为什么你不叫'parsedData = parseData(提交);'在'RESP = JSON.parse(身体);'? –

回答

0

添加回调参数sendRequest

var data = sendRequest(options, function(){ 
    var parsedData = parseData(commits); 
}); 

var sendRequest = function (options, callback) { 
    var resp = {} 
    var request = https.request(options, function (response) { 
     var body = ''; 
     response.on("data", function (chunk) { 
      body += chunk.toString('utf8'); 
     }); 

     response.on("error", function(e){ 
      console.log(e); 
     }) 

     response.on("end", function() { 
      resp = JSON.parse(body); 
      callback(resp); 
     }); 
    }); 
    request.end(); 
} 
+0

如何在尝试修改现有对象时工作?例如: '返回{ 一个:sendRequest将(a)中, B:sendRequest将(B)}' (我越来越未定义的对象) –

相关问题