如何让一个节点http请求暂停执行直到完成
问题描述:
我得到了一个来自我想传递给另一个函数的服务的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();
}
答
添加回调参数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)}' (我越来越未定义的对象) –
为什么你不叫'parsedData = parseData(提交);'在'RESP = JSON.parse(身体);'? –