zoukankan      html  css  js  c++  java
  • 缓存斐波那契数据与队列执行promise

    // 缓存斐波那契数据 并取第n个
    function
    cacheFb() { let pn = null let arr = [] let [per, cur] = [0, 1] return function(n) { if(pn && pn >= n) { console.log('取缓存的数据') return arr[n - 1] } else { console.log('取从pn开始到n的数据',[per, cur], pn, n) for(let i=pn; i<n; i++) { [per, cur] = [cur, per + cur] arr.push(cur) } pn = n; return arr[arr.length - 1] } } } let getFb = cacheFb() console.log(getFb(6))

    利用闭包持久缓存参数

    2.使用队列顺序执行promise

    // 生成长度为10的随机数组
    let parr_ = []
    ~function(i) {
        if(i < 10) {
            let curI = i
            parr_.push(
                new Promise((res, rej) => {
                    setTimeout(() => {
                        res(curI)
                    }, 1000)
                })
            )
            i++;
            arguments.callee(i)
        }
    }(0)
    
    // 定义队列
    function queue(arr) {
        let res = []
        let seq = Promise.resolve()
        arr.forEach(item => {
            seq = seq.then(res => item).then(data => {
                res.push(data)
                return res
            })
        })
        return seq
    }
    
    queue(parr_).then(res => {
        console.log('res:', res)
    })

    then返回一个全新promise,then的执行返回值会传递下去

  • 相关阅读:
    koa2 中间件里面的next到底是什么
    nodejs 之 nvm和pm2
    javascript瀑布流
    转使用chrome命令行:disable
    MariaDB 用户与授权
    MariaDB TRANSACTION
    IHS .kdb转crt,key
    MariaDB TRIGGER
    MariaDB CURSOR
    MariaDB PROCEDURE
  • 原文地址:https://www.cnblogs.com/juexin/p/13454500.html
Copyright © 2011-2022 走看看