我可以指定如何处理异步JavaScript库中的错误吗?

时间:2014-05-23 14:02:07

标签: javascript node.js error-handling async.js

我正在尝试清理异步函数的输入。具体来说,给定一个API的凭证列表,我试图通过向API发送测试请求并检查每个API的结果来过滤掉哪些无效。

我面临的问题是:我想将无效密钥收集到一个列表中。我通常会使用async库来使用series函数按顺序执行请求。但是,从文档:

  

如果系列中的任何函数将错误传递给其回调,则不再运行任何函数,并立即使用错误值调用callback

这不是理想的行为:我想收集错误代替响应(或两者都有)。这是可能的,使用这个库,而不改变我与API交互的方式吗?

1 个答案:

答案 0 :(得分:2)

这个问题的解决方案最终变成了一种hacky,但它运行正常。我有一个credentials列表和一个异步函数apiCall,看起来像这样:

var apiCall = function(arg, callback){
    ...
}

并且解决方案是使用mapSeries中的async,但是翻转回调参数,如下所示:

async.mapSeries(credentials, function(creds, callback){
    apiCall(creds, function(err, res){
      callback(null, err);
    });
  }, 
function(nil, errors){
    console.log(_.compact(errors));
});

其中_.compact从数组中删除了伪元素,删除了返回非错误响应的null。这让我得到了我正在寻找的东西。