When you write something like
new Promise(resolve => {
order.push(1);
setTimeout(() => {
order.push(2)
resolve();
}, 100);
});
, , 0,1 .
, , , promises .
, , , , , !
, - , , , , , -
var tasks = [
_ => new Promise(resolve => {
order.push(1);
setTimeout(() => {
order.push(2)
resolve();
}, 100);
}),
_ => new Promise(resolve => {
order.push(3);
setTimeout(() => {
order.push(4)
resolve();
}, 100);
}),
_ => new Promise(resolve => {
order.push(5);
resolve();
}),
];
( ES2015 )
, , .
, , , ..
(function iterate(i) {
tasks[i]().then(() => {
if (tasks[++i]) iterate(i);
});
})(0);
FIDDLE
Edit:
Array.reduce, , , , promises
tasks.reduce((cur, next) => cur.then(next), Promise.resolve()).then(() => {
// all done, chain is complete !
});