Promise實現隊列


有時候我不希望所有動作一起發生,而是按照一定順序,逐個進行

 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']);

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM