我可以指定如何处理asynchronousJavaScript库中的错误?

我正在尝试清理asynchronous函数的input。 具体来说,给定一个API的凭证列表,我试图通过向API发送一个testing请求并检查每一个的结果来筛选哪些是无效的。

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

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

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

这个问题的解决scheme结束了有点哈克,但它工作正常。 我有一个credentials列表和一个asynchronous函数apiCall ,看起来像这样:

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

解决的办法是使用async mapSeries ,但是像下面这样翻转callback参数:

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

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