zoukankan      html  css  js  c++  java
  • 纪念两个算法

    1、如何使用promise,做到无限then

    代码如下

    function reducePromise(promiseArrGen) {
        promiseArrGen.reduce((pre, next) => {
            return pre.then((data) => {
                console.log(data);
                return next(data);
            })
        }, Promise.resolve(0))
    }
    
    function createPromise(i) {
        return () => {
            return new Promise((resolve, reject) => {
                setTimeout(()=>{
                    resolve(i)
                }, 1000)
            })
        }
    }
    
    let PromiseArrGens = []
    
    for(var i = 1; i < 10; i++) {
        PromiseArrGens.push(createPromise(i))
    }
    
    reducePromise(PromiseArrGens);

    reducer 的本质是递归,有很沙雕的方法,实现promise无限then

    let reducePromise = (PromiseArr) => {
        if(PromiseArr.length ===0 ) {
            return
        }
        return PromiseArr.splice(0, 1)[0]().then(data => {
            console.log(data);
            reducePromise(PromiseArr)
        });
    }
    
    function createPromise(i) {
        return () => {
            return new Promise((resolve, reject) => {
                setTimeout(()=>{
                    resolve(i)
                }, 1000)
            })
        }
    }
    
    let PromiseArrGens = []
    
    for(var i = 1; i < 10; i++) {
        PromiseArrGens.push(createPromise(i))
    }
    
    reducePromise(PromiseArrGens);

    2、使用递归做加法

    //递归做加法
    add = (n) => {
        if([0].includes(n)) {
            return n;
        }
        
        return n + add(n-1);
    }
    
    console.log(add(10))
  • 相关阅读:
    python爬虫基础(requests、BeautifulSoup)
    python中字典按键、值进行排序
    进程和线程的区别
    MySQL中的索引
    python中浅拷贝和深拷贝的区别
    谈谈final、finally、finalize的区别
    python中布尔值是false
    生成器的阐释
    文件处理
    内置函数
  • 原文地址:https://www.cnblogs.com/windseek/p/12622822.html
Copyright © 2011-2022 走看看