【发布时间】:2015-06-18 02:49:21
【问题描述】:
在文档中,我找不到在异步系列方法中处理错误的方法。 我怎样才能正确地学习异步 js,通常 github wiki 在实用性方面低于与它无关的人的平均水平。
这是我的代码:
function async1(cb,err) {
setTimeout(function () {
console.log(1);
cb();
}, 1000);
}
function async2(cb,err) {
setTimeout(function () {
// console.log(2);
throw new Error;
cb();
}, 1000);
}
function async3(cb,err) {
setTimeout(function () {
console.log(3);
cb();
}, 1000);
}
async.series([
async1,
async2,
async3
], function (err) {
console.log(err);
});
它只是终止并抛出错误。
我有几个问题...
我是否正确处理了错误,显然不正确,所以出了什么问题?
为了使异步工作,串联使用的函数是否必须具有第一个参数作为回调?
如果是,那么是否意味着您不能将它与其他库一起使用。因为他们可能没有回调作为第一个参数。
【问题讨论】:
-
节点回调不是安全抛出的,你不能在它们内部以这种方式抛出异常(例如承诺 - 顺便说一句),你需要尝试/捕获它们并使用错误 @987654323 调用 cb @ 而不是扔掉它。见stackoverflow.com/questions/14301839/…
-
我如何使用 asyncjs
-
这不是 async.js 的错。该错误在 setTimeout 中。正如 Benjamin 所说,您不能从异步函数中抛出错误。而是将错误作为参数传递给您的回调。
标签: node.js asynchronous