2016-08-11 55 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)}' (我越來越未定義的對象) –

相關問題