美文网首页
异步函数队列化执行总结

异步函数队列化执行总结

作者: 李牧敲代码 | 来源:发表于2020-04-15 11:01 被阅读0次

在阅读vue-router源码的时候接触了这个异步函数队列化执行的设计,感觉还是挺厉害的,在此做个总结:




let runQueue = (queue, fn, cb) => {
    const step = (index) => {
        if(index >= queue.length) {
            cb()
        }else {
            if(queue[index]) {
                fn(queue[index], () => {
                    step(index + 1)
                })
            }else {
                step(index + 1)
            }  
        }
    }

    step(0)
}

const iterator = (fn, next) => {
    fn(() => {
        next()
    })

}
let f1 = (resolve) => {
    console.log('this is f1');
    resolve()
}


let f2 = (resolve) => {
    setTimeout(function() {
        console.log('this is f2')
        resolve();
    }, 1000)
}

let f3 = (resolve) => {
    console.log('this is f3');
    resolve();
}

let myQueue = [];


myQueue.push(f1)
myQueue.push(f2)
myQueue.push(f3)


let myCb = () => {

    console.log('all is done')
}


runQueue(myQueue, iterator, myCb)
// this is f1
// this is f2
// this is f3
// all is done

相关文章

  • 异步函数队列化执行总结

    在阅读vue-router源码的时候接触了这个异步函数队列化执行的设计,感觉还是挺厉害的,在此做个总结:

  • iOS GCD基本使用(二)

    //异步函数+并发队列会开启多条线程,异步执行- (void)asyncConcurrent{//1.创建队列//...

  • 【Flask】简单的后台异步队列

    异步任务队列 异步队列输入 异步队列获取并执行 创建线程开始执行方法并返回进程号 主函数与flask main一起...

  • iOS学习笔记_GCD的基本使用

    1、 异步函数+并发队列:开启多条线程,并发执行任务2、 异步函数+串行队列:开启一条线程,串行执行任务3、...

  • GCD各种情况整理

    01 异步函数+并发队列:开启多条线程,并发执行任务02 异步函数+串行队列:开启一条线程,串行执行任务03 同步...

  • GCD的几种创建方式及基本使用

    同步函数 同步函数+主队列 同步函数+串行队列 同步函数+并发队列 异步函数 异步函数+主队列 异步函数+串行队列...

  • 事件循环机制

    JS 有个全局的函数执行栈,这是执行同步函数的地方 除了函数执行栈,还有一个事件队列,这是执行异步函数的地方 异步...

  • 多线程GCD笔记

    同步函数 + 主队列 异步函数 + 主队列 同步函数 + 串行队列 异步函数 + 串行队列 同步函数 + 并发队列...

  • iOS GCD底层分析(3)--栅栏函数、信号量、调度组、事件源

    前言 上片文章分析了GCD队列和函数的使用方式、串行队列和并发队列的创建、同步函数和异步函数底层执行流程、串行队列...

  • 只要是主队列就不会开线程

    同步函数+(并发队列or主队列)的两种情况 一个接一个执行 异步执行

网友评论

      本文标题:异步函数队列化执行总结

      本文链接:https://www.haomeiwen.com/subject/bcwqvhtx.html