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]
  • 相关阅读:
    StringBuffer
    Mysql语法大全
    String类
    装箱拆箱
    修饰符
    杨辉三角
    基本变量类型
    随手快递app开发第五天
    随手快递app开发第四天
    随手快递app开发第三天
  • 原文地址:https://www.cnblogs.com/oneall/p/13969759.html
Copyright © 2011-2022 走看看