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))
  • 相关阅读:
    Swift _ OC _ 混编
    CoreAnimation 寄宿图
    CoreAnimation 开篇
    iOS 杂笔-26(苹果禁用热更新)
    Swift_TableView(delegate,dataSource,prefetchDataSource 详解)
    Swift_ScrollView _ API详解
    插入排序_c++
    选择排序_c++
    冒泡排序_c++
    Swift_协议
  • 原文地址:https://www.cnblogs.com/windseek/p/12622822.html
Copyright © 2011-2022 走看看