Sto provando ad attraversare un albero di nidificazione di elementi utilizzando async.js. L'attraversamento termina dopo aver attraversato un solo ramo.Asincrona l'attraversamento dell'albero utilizzando async.js
7
A
risposta
0
ho capito male l'uso del callback()
nella libreria async.js
. In questo articolo mi ha aiutato a ottenere una comprensione: http://www.sebastianseilund.com/nodejs-async-in-practice Questa è stata la mia soluzione:
exports.buildFamily = function(item_id, done){
console.log('API:buildFamily');
var extendedFamily={}
exports.getItembyId(item_id, function(err, item){
if(err){throw err}
extendedFamily=item;
if(item.descendants){
extendedFamily.kids=[]
async.eachSeries(item.descendants, function(item_id, callback){
exports.getItembyId(item_id, function(err, item){
if(err){throw err}
if(item.descendants){
exports.buildFamily(item.item_id, function(err, family){
extendedFamily.kids.push(family);
callback();
})
}else{
extendedFamily.kids.push(item);
callback();
}
})
}, function(err){
done(null, extendedFamily)
})
}else{
done(null, extendedFamily)
}
});
}
2
La logica è un po 'complicata, quindi mi assicurerei che per prima cosa andasse bene. Ecco alcune cose che probabilmente ti sei perso. conta +=
come accennato in precedenza. Nessuna richiamata all'interno del tuo iteratore e spingevi anche la famiglia all'interno di extendedFamily.kids due volte.
count += item.descendants.length;
console.log('outercount ' + count);
async.eachSeries(item.descendants, function(item, cb) {
count--;
console.log('item: ' + item);
exports.buildFamily(item, function(err, family){
console.log('deepcount: ' + count);
if(count===0){ return mback(null, extendedFamily);}
else {
extendedFamily.kids.push(family);
cb();
}
})
})
Problemi correlati
- 1. come interrompere async.js ogni ciclo?
- 2. Node.js - Async.js: come funziona l'esecuzione parallela?
- 3. Async.js - ETIMEDOUT e Callback erano già chiamati
- 4. Schema di differenza finita asincrona utilizzando MPI_Put
- 5. Annullamento dell'azione asincrona precedente utilizzando redux-thunk
- 6. come inviare e-mail utilizzando asincrona django
- 7. Registrazione asincrona
- 8. Scrivere un'API asincrona/non asincrona ben progettata
- 9. Elaborazione asincrona Tomcat 7
- 10. Programmazione asincrona in Grails
- 11. Elaborazione asincrona di Django
- 12. Uscita asincrona Java Runtime.exec()
- 13. validazione asincrona html5
- 14. Serializzazione asincrona protobuf
- 15. programmazione asincrona in python
- 16. Task.Delay (0) Non asincrona
- 17. Valutazione asincrona in Mathematica
- 18. Node.js asincrona per sincronizzare
- 19. Versione asincrona di ObjectCache?
- 20. setTimeout su Funzione asincrona
- 21. System.Data.IDbCommand e esecuzione asincrona?
- 22. Richiesta HTTP parallela asincrona
- 23. Ricorsione asincrona Javascript
- 24. L'attività asincrona non termina
- 25. Meteor wrap Sintassi asincrona
- 26. Attività asincrona RxJava in Android
- 27. Azione T sincrona e asincrona
- 28. SqlDependency con EntityFramework 6 (asincrona)
- 29. Autenticazione asincrona dell'account con Volley
- 30. Angular2 canActivate() chiamata funzione asincrona
'' = + non è l'operatore di assegnazione addizione javascript. . . –
Hai appena ricevuto un errore di runtime da quell'errore, quindi? –