节点异步 - 工作异步方法返回async.parlally内部的未定义



基本上我有一个方法从API中获取值,但是在异步内部。并行列出的结果均未定义。

这是方法:

function getNumberOfSharesFromFacebookApi(url ,callback) {
  request(facebookApiUrl + url + '&format=json', function (error, response, body) {
    let res = 0;
    if (!error && response.statusCode == 200) {
      try {
        res = JSON.parse(body)[0]['total_count'];
      } catch(err) { }
    }
    callback(res);
  });
}

这是异步电话:

async.parallel ([
  callback => {
    getNumberOfSharesFromFacebookApi(urlsToTest[0], callback);
  },
  callback => {
    getNumberOfSharesFromFacebookApi(urlsToTest[1], callback);
  },
  callback => {
    getNumberOfSharesFromFacebookApi(urlsToTest[2], callback);
  },
  callback => {
    getNumberOfSharesFromFacebookApi(urlsToTest[3], callback);
  }
],
(err, results) => { 
  console.log(results);
});

在您的请求功能上,将响应作为回调的第二个参数。请求使用节点样式回调,其中第一个参数是错误。

 function getNumberOfSharesFromFacebookApi(url ,callback) {
    request(facebookApiUrl + url + '&format=json', function (error, response, body) {
      if(error) return callback(error); //callback on error
      let res = 0;
      if (!error && response.statusCode == 200) {
        try {
          res = JSON.parse(body)[0]['total_count'];
        } catch(err) { }
      }
      callback(null, res);
    });
  }

最新更新