SOURCE

console 命令行工具 X clear

                    
>
console
var queue = function(arr) {
    // 串行执行promise 构建队列 
    var res=[];
    var sequence = Promise.resolve();
    arr.forEach(function (item) {
        sequence = sequence.then(item).then(data=>{
                res.push(data);
                return res
        }).catch(data=>{
            //有reject也返回
            res.push(data);
            return res;
        })
    })

    return sequence 
}

var isPaused =  false;    // 暂停状态标识
var pausePromise = null; // 暂停时的Promise占位符
var pauseResolve = null; // 恢复执行的触发器

function pause() {
    return new Promise(resolve => {
        if(!isPaused){
            resolve()
        }else{
           const interval = setInterval(() => {
                if (!isPaused) {
                    clearInterval(interval);
                    resolve();
                }
            }, 10); // 检查频率为100ms 
        }
        
    });
}

var t = [

    _=>{
        return new Promise((resolve,reject)=>{
            // 执行前检查暂停状态
            pause().then(_=>{
                setTimeout(_=>{
                    console.log("ok1");
                    resolve('ok1')
                },2000)
            })
            

        })
    },
    _=>{
        return new Promise((resolve,reject)=>{
 // 执行前检查暂停状态
            pause().then(_=>{

                setTimeout(_=>{
                    console.log("ok2");

                    resolve('ok2')
                },2000)

            })
           

        })
    },
     _=>{
        return new Promise((resolve,reject)=>{
 // 执行前检查暂停状态
           pause().then(_=>{
            setTimeout(_=>{
                console.log("ok3");

                resolve('ok3')
            },2000)

           })
          

        })
    }, 
     _=>{
        return new Promise((resolve,reject)=>{
 // 执行前检查暂停状态
           pause().then(_=>{
            setTimeout(_=>{
                console.log("ok4");

                resolve('ok4')
            },2000)

           })
          

        })
    }, 
]


document.getElementById('btn1').onclick=function(){
  queue(t).then(res=>{
        console.log(res);
    })
  
}
document.getElementById('btn2').onclick=function(){
  if (!isPaused) {
		      isPaused = true; 
		    }
}

document.getElementById('btn3').onclick=function(){
isPaused = false; 

}
<button id="btn1">开始</button>
<button id="btn2">暂停</button>
<button id="btn3">继续</button>