Example 3-12. Build a sequential chain using a loop
// Build a sequential chain of promises from the elements in an array
function sequence(array, callback) {
return array.reduce(function chain(promise, item) {
return promise.then(function () {
return callback(item);
});
}, Promise.resolve());
};
var products = ['sku-1', 'sku-2', 'sku-3'];
sequence(products, function (sku) {
return getInfo(sku).then(function (info) {
console.log(info)
});
}).catch(function (reason) {
console.log(reason);
});
function getInfo(sku) {
console.log('Requested info for ' + sku);
return ajax(/*someurl for sku*/);
}
// Console output:
// Requested info for sku-1
// Info for sku-1
// Requested info for sku-2
// Info for sku-2
// Requested info for sku-3
// Info for sku-3