我有以下执行GET调用的功能。我想等待响应,然后执行下一步。我的代码看起来像这样
getListOfChannels : function(token, callback){
var Channels = [];
var options = { method: 'GET',
url: url,
headers:
{
'x-api-key': token } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
var json = JSON.parse(body)
var data = json.MemberEntitlement;
for(var i=0 ; i < data.length ; i++){
if(data[i].Entitled == false){
Channels.push(data[i].ChannelNumber);
}
}
});
callback(Channels[0]);
}
我的回调函数也只是打印值
simplePrint : function(arg){
console.log(arg)
}
但是,回调函数不会等待完整响应并打印出undefined。 我该怎么办。我可以添加隐式等待,但这似乎不是一个好习惯。
答案 0 :(得分:1)
我认为您在请求函数调用后调用回调。它不在请求的范围内,而是在 getListOfChannels 范围内。因此,回调正在同步运行。尝试更换:
});
callback(Channels[0]);
}
与
callback(Channels[0]);
});
}