我可以指定如何处理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
。 这正是我正在寻找的东西。