J'ai fonctions suivantes promesse mises en application commeexécution séquentielle de Promise
return new Promise(function(resolve, reject) { //logic });
- cart.getBasket (REQ)
- cart.updateBasket (REQ)
- cart.updateDefaultShipment (REQ)
- cart.getBasketObject (basket)
Actuellement j'exécute co de l'aide
app.post('/Billing', function(req, res) {
cart.getBasket(req).then(function(basket) {
cart.updateBasket(req).then(function() {
cart.updateDefaultShipment(req).then(function(basket) {
cart.getBasketObject(basket).then(function(basketObj) {
res.render('billing', {
basket: basketObj
});
});
});
});
}).catch(function(error) {
console.log(error);
});
});
Je l'ai lu Promise.each
et de la pensée de l'utiliser comme le flux de ma logique doit être séquentielle, mais quand je l'utilise Promise.each
ne fonctionne pas comme prévu parce que je voyais que la valeur inner function of each
de retour de toutes les promesses exécution.
app.post('/Billing', function(req, res) {
var asyncCalls = [cart.getBasket(req), cart.updateBasket(req), cart.updateDefaultShipment(req), cart.getBasketObject(basket)];
Promise.each(asyncCalls, function(basketObj){
res.render('billing', {
basket: basketObj
});
});
});
Alors, est-il un moyen plus propre disponible pour réaliser ce que je fais avec .then
chaîne i.e. ont une chaîne plus propre.
De même, est-il possible dans l'exécution de promesses séquentielles que la fonction de promesse suivante obtienne la valeur de retour de la promesse précédente qui a été exécutée. PS: Promise longueur de tableau sait au préalable.
http://bluebirdjs.com/docs/api/promise.reduce.html –
Pourquoi ne pas aplatir la chaîne? Les promesses imbriquées ne devraient pas être nécessaires. 'cart.getBasket (req) .then (cart.updateBasket.bind (non défini, req) .then (cart.updateDefaultShipment.bind (undefined, req))'. Vous ne devez pas utiliser bind non plus, vous pouvez utiliser une fonction de publicité. – ste2425