我有以下执行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/

10-11 05:52