Ho una coda asincrona che sto spingendo a cui farò qualcosa. Il modo in cui generi gli elementi che ho bisogno di inserire è attraverso alcune liste annidate da un oggetto dati. La coda finisce per elaborare tutto ma, per qualche motivo, non riesco ad accedere alla mia callback principale con lo console.log('All done.')
. Ho rimosso la maggior parte delle cose inutili e ho lasciato solo cose asincrone. Che cosa sto facendo di sbagliato? Mi sto perdendo qualcosa?Ciclo asincrono annidato che spinge verso una coda asincrona che non chiama il callback principale
var q = async.queue(function(task, callback) {
console.log('hello ' + task);
callback();
}, 2);
function A(data) {
B(data, function() {
// THIS ISN'T getting called.
console.log('All done.');
})
}
function B(data, callback1) {
var list = [[1,2], [3,4], [5,6]];
async.each(list, function(item, callback1) {
async.each(item, function(i, callback2) {
doWork(i, function() {
console.log('Work done');
})
callback2();
},
// THIS should be called when everything in this each is done.
callback1)
})
}
function doWork(i, callback3) {
q.push(i, callback3);
}
Per chiarire la domanda: quale risultato ottieni? Cosa ti aspettavi? Dov'è il codice che chiama A e B? – hugomg
Tutte le attività "ciao" + e "Lavoro fatto" vengono stampate. Ma solo il principale "Tutto fatto". non lo è. – owenlero
per favore correggi il tuo codice così almeno è sintatticamente corretto, altrimenti è davvero difficile capirlo – soulcheck