let p = new Promise(function(resolve, reject){
setTimeout(resolve, 5000);
});
p
.then( () => { alert(1); } )
.then( () => { alert(2); } )
.then( () => { alert(3); } );
const wait = time => new Promise(r => setTimeout(r, time));
wait(1000)
.then(() => { console.log(1); return wait(1000); })
.then(() => { console.log(2); return wait(1000); })
.then(() => { console.log(3); });
// или
[ 1, 2, 3 ].reduce((promise, n) => promise
.then(() => wait(1000))
.then(() => console.log(n))
, Promise.resolve());