0
我执行“GET”请求一个URL取回的响应,所以我有一个处理请求请求模块使用
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的得到执行,它会立即向前走,然后执行送出数据和那是因为要求模块是一个异步操作。
我该如何等待newValue对象被填充,然后sendData()应该被调用?
你不能等。您必须在回调中使用响应,并且在收到响应后您想要执行的任何代码必须实际处于回调中。这就是你如何编程异步响应。它与同步编程不同。副本中提供了许多示例。 – jfriend00