Мне нужно пропустить функции или прорыв в async.series, и мне было интересно, как я должен это делать. У меня есть массив элементов, которые мне нужно перебирать. Я помещаю этот список в функцию async.each. Каждый элемент массива затем перебирает список функций, необходимых перед тем, как двигаться дальше, в серии (поскольку информация из одного из них требуется в следующем). Но в некоторых случаях мне нужно только пройти первую функцию, тогда, если условие не выполняется (например, это категория, которую мы не используем), а затем обратный вызов в цикле async.each для следующего элемента. Вот пример моего кода:Как выйти из серии async внутри цикла async.each - node.js
exports.process_items = function(req, res, next){
var user = res.locals.user;
var system = res.locals.system;
var likes = JSON.parse(res.locals.likes);
var thecat;
//process each item
async.each(items, function(item, callback){
//with each item, run a series of functions on it...
thecat = item.category;
async.series([
//Get the category based on the ID from the DB...
function(callback) {
//do stuff
callback();
},
//before running other functions, is it an approved category?
//if it is not an approved category, SKIP THE OTHER FUNCTIONS IN THE LIST (but how?)
function(callback) {
//do stuff
callback();
},
//some other functionality run on that item,
function(callback){
//do stuff
callback():
}
], function(err) {
if (err) return next(err);
console.log("done with series of functions, next item in the list please");
});
//for each like callback...
callback();
}, function(err){
//no errors
});
}
Но это только выйдет из этой функции? Или попросит его вернуть конец обратного вызова в серию? Я хочу закончить серию, не выполняя все другие функции в серии, и снова вернуться к async.each. –
Это не конец серии, но он останавливает любую работу и отправляет управление обратно в async.each. Вам нужен один из них в начале любой функции, которую вы не хотите запускать, если результат не одобрен. Я также заметил, что вам нужен звонок для обратного вызова сразу после строки console.log. Легко справиться со всеми функциями обратного вызова, плавающими вокруг. – Allan
Это сработало, спасибо Аллан! –