В документации Я не могу найти способ обработки ошибки в методе серии async. Как я могу правильно изучить async js, обычно wiki для github является ниже среднего для людей, которые не связаны с ним с точки зрения полезности.Как вы обрабатываете ошибку в asyncjs?
Вот мой код:
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);
});
Это просто заканчивается и ошибка броска.
Я несколько вопросов ...
Правильно ли я ошибка обработки, по-видимому, не правильно, так что не так?
Для работы Async функция, используемая в серии, должна иметь первый параметр как обратный вызов?
Если да, значит, вы не можете использовать его в других библиотеках. Потому что они могут не иметь обратного вызова в качестве первого параметра.
Обратные вызовы узлов не выбрасываются в безопасное место, и вы не можете просто перебрасывать исключения таким образом внутри них (например, обещания - это, кстати), вам нужно попробовать/поймать их и вызвать cb с ошибкой 'cb (new Error)' а не бросать его. См. Http://stackoverflow.com/questions/14301839/javascript-asynchronous-exception-handling-with-node-js –
Как я могу сделать с asyncjs –
Это не ошибка async.js. Ошибка находится в setTimeout. Как уже упоминал Бенджамин, вы не можете выбросить ошибку из асинхронных функций. Вместо этого передайте ошибку в качестве аргумента для вашего обратного вызова. – slebetman