我正在对网址执行“GET”请求以获取响应,因此我有一个处理请求的函数
var makeRequest = function(objs, callback){
var url = 'adasda..';
//...
var result = null;
request(url, function(error, response, body){
if(!error && response.statusCode === 200){
result = body;
callback(null, body)
}
});
return result;
}
在我的主要功能中,我正在调用上述功能
function main(values, callback){
//...some logic
var newValue={....}
if(some conditional){
newValue = makeRequest(values,callback); //newValue gets appended with new data
}
sendData(null, newValue, callback); //this function does a post
}
var sendData = function(....){}
我注意到一旦 makeRequest 被执行,它会立即继续执行 sendData ,因为请求模块是异步操作。
我怎么能等到 newValue 对象被填充然后再调用sendData()?
答案 0 :(得分:0)
等到回叫触发。我已经更新了您的代码。
var makeRequest = function(objs, callback) {
var url = 'adasda..';
request(url, function(error, response, body) {
if (!error && response.statusCode === 200) {
callback(null, body)
}
});
};
function main(values, callback) {
var newValue = {}
if (some conditional) {
makeRequest(values, function(error, result) {
// Call sendData once we get the data
sendData(null, result, callback);
callback(error, result);
});
}
}
var sendData = function() {};
为避免嵌套回调,您可以使用Promises。