没有为async.parallel调用完整的回调

时间:2015-12-14 22:40:00

标签: javascript node.js asynchronous

我需要对100行进行api调用以填充描述(我更喜欢并行执行)。但是有些行可能没有描述,在这种情况下,api将返回404.我需要在没有描述的行或行中显示警告消息,并从模态数据中删除这些行,这意味着我需要完整的回调或完成回调。然而,completeCallback没有被调用,我“认为”它是因为某些行没有描述。

你能告诉我如何实现这个目标吗?

这是我的代码:

    function getDescription(processedData) {
        $.ajax({
            url: baseApiUrl + '/Summary?id=' + processedData.id,
            type: 'GET',
            dataType: 'json',
            contentType: 'application/json',
            success: function (data) {
                processedData.SummaryDescription = data;
            },
            error: function (xhr, status, e) {
                if(xhr.statusCode === 404){
                    processedData.SummaryDescription = '';
                }else{

                }
            }
        });
    };

//Below line is in a look
parallelCallArray.push(getDescription.bind(null, processedData));

//Below line is out of loop
Async.parallel(parallelCallArray, function(err, result){
  console.log('all calls completed...');
}); 

1 个答案:

答案 0 :(得分:2)

您错过了并行执行的函数的回调参数。如果您没有执行回调,async将假设您的功能尚未完成。尝试这样的事情:

function getDescription(processedData, cb) {
  $.ajax({
    url: baseApiUrl + '/Summary?id=' + processedData.id,
    type: 'GET',
    dataType: 'json',
    contentType: 'application/json',
    success: function (data) {
      processedData.SummaryDescription = data;
      cb();
    },
    error: function (xhr, status, e) {
      if (xhr.statusCode === 404) {
        processedData.SummaryDescription = '';
      } else {
      }
      cb(new Error(e));
    }
  });
}