有时候我不希望所有动作一起发生,而是按照一定顺序,逐个进行
var promise=doSomething(); promise=promise.then(doSomethingElse); promise=promise.then(doSomethingElse2); promise=promise.then(doSomethingElse2);
// forEach 实现
function queue(things){ let promise=Promise.resolve(); things.forEach(element => { promise=promise.then(()=>{ return new Promise(resolve=>{ setTimeout(() => { console.log(element) resolve('ok'); }, 1000); }); }) }); } queue(['h1','h2','h3']);
// reduce 实现
function queue2(things) { let promise = Promise.resolve(); things.reduce(function (totel, item) { return totel.then(() => { return new Promise(resolve => { setTimeout(() => { console.log('reduce', item) resolve('ok'); }, 1000); }); }); }, promise) } queue2(['h1', 'h2', 'h3']);