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

  

转载于:https://www.cnblogs.com/richard1015/p/9155683.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值