zoukankan      html  css  js  c++  java
  • promise基于reduce实现队列消息

    
    
    function dosomething(num) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(num);
                if(num > 4) reject(num);
                else resolve(num);
            }, num * 1000);
        });
    }
    
    
    function queue(arr, thing) {
        return arr.reduce((promise, params) => 
                    new Promise((resolve, reject) => {
                        promise.then(results => {
                            thing.call(null, params).then(r => {
                                resolve([...results, r]);
                            }).catch(e => {
                                reject(e);
                            });
                        })
                    }),
                    Promise.resolve([]));
    }
    
    
    
    
    
    queue([4, 1, 3, 2], dosomething).then(res => {
        console.log('succes', res);
    }).catch(err => {
        console.log('error', err);
    });
    
    // 输出
    // 4
    // 1
    // 3
    // 2
    // succes [4, 1, 3, 2]
  • 相关阅读:
    第三周作业
    #第四周作业
    第十二周作业
    第十一周作业
    第九周作业
    第八周作业
    2019第七周作业
    第三次实验报告及第五次课程总结
    第二次课程总结&学习总结
    第三周实验和学习总结
  • 原文地址:https://www.cnblogs.com/oneall/p/13969759.html
Copyright © 2011-2022 走看看