Ich versuche, ein Array synchron iterieren mit async.each
:Node.js Asynchron-Array Iteration
async.each(supplier_array, function(supplier) {
console.log('looking at : ' + supplier);
knex(host_name + '.order_item').where({
supplier: supplier,
order_id: order_id
}).then(function(data) {
console.log(data);
knex(host_name + '.distributor').select()
.then(function(data) {
console.log(data);
}).catch(function(error) {
console.log('error: ' + error);
});
}).catch(function(error) {
console.log('error: ' + error);
});
});
Mein supplier_array
hat drei Elemente. Also, was passieren soll, ist die App sollte (synchron):
Für Anbieter 1/erstes arr/erstes Array-Element:
- console.log (Lieferant)
- console.log (ORDER_ITEM)
- console.log (Verteiler)
für Lieferanten 2/zweites Array-Element:
- console.log (Lieferant)
- console.log (ORDER_ITEM)
- console.log (Verteiler)
für Lieferant 3/drittes Feldelement:
- console.log (Lieferant)
- console.log (ORDER_ITEM)
- console.log (Verteiler)
es jedoch wirkt asynchron:
- console.log (Lieferant)
- console.log (Lieferant)
console.log (Lieferant)
console.log (order_item)
- console.log (order_item)
console.log (ORDER_ITEM)
console.log (Verteiler)
- console.log (Verteiler)
- console.log (Verteiler)
Kann mir jemand die gewünschte Hilfe erreichen Effekt des Durchlaufens durch die Schritte innerhalb von async
synchron?
Vielen Dank im Voraus!
Warum ist es ein Problem? – Wainage
Sie müssen möglicherweise eine "Rückkehr" zu jedem Knex Versprechen machen. Das bestätigt das Async, um es wissen zu lassen, dass es ein Versprechen zu verarbeiten gibt. Probieren Sie es aus und lassen Sie mich wissen, ob es die richtige Antwort ist.Ich bin mit Knex selbst auf dieses Problem gestoßen. Außerdem können Sie das Innere "dann" in Zeile 9 um eine Ebene nach hinten verschieben, da Sie ein Versprechen zurückgeben. – Handonam