我有以下执行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)
}
但是,回调函数不会等待完整的响应,而是输出未定义的内容。
我该怎么办。我可以添加隐式等待,但这似乎不是一个好习惯。
最佳答案
我认为您是在请求函数调用之后调用回调。它不在请求的范围内,但在getListOfChannels范围内。因此,回调是同步运行的。尝试更换:}); callback(Channels[0]);}
与 callback(Channels[0]);});}
关于node.js - 无需等待即可执行 Node JS回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49524188/