美文网首页
js异步编程的四种方式

js异步编程的四种方式

作者: 天字一等 | 来源:发表于2018-09-17 18:19 被阅读8次
1、回调函数
      function f1(calback){
        console.log(1)
        setTimeout(function () {
            calback();
        },0)
    }
    function f2() {
        console.log(2)
    }
    f1(f2);
2、事件监听:
3、订阅/发布模式: 存在一个信号中心,某个任务完成时,向信号中心发出一个信号,其它任务可以向信号中心“订阅”这个信号,从而知道什么时候开始执行
> 存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,其他任务可以向信号中心"订阅"(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做["发布/订阅模式"](http://en.wikipedia.org/wiki/Publish-subscribe_pattern)(publish-subscribe pattern),又称["观察者模式"](http://en.wikipedia.org/wiki/Observer_pattern)(observer pattern)。

  class EventCenter {
        // 定义事件中心
        constructor() {
            this.events = {}
        }

        // 发布器
        on(evt, handler) {
            // 检测事件信号是否存在,当存在时不做操作,不存在时创建给予这个信号的方法存储器(数组)
            this.events[evt] = this.events[evt] || []
            console.log(this.events[evt])
            // 将传入的方法放入数组中
            this.events[evt].push({
                handler: handler
            })
        }

        // 订阅器
        fire(evt, params) {
            console.log(1)
            // 检测当前被订阅的信号是否存在,存在则执行其内的所有方法
            if (!this.events[evt]) {
                return
            }
            for (let i = 0; i < this.events[evt].length; i++) {
                this.events[evt][i].handler(params)
            }
        }
    }

    let center = new EventCenter();

    center.on('event', function(data) {
        console.log('event执行了第一个任务')
    });

    center.on('event', function(data) {
        console.log('event执行了第二个任务')
    });
    console.log(6)
    center.fire('event')

    //最终结果  6  1  event执行了第一个任务  event执行了第二个任务

相关文章

  • js异步编程的四种方式

  • js异步编程(updating)

    js 异步编程方式: Promise,generator/yield,async/await 回掉函数 js事件监...

  • 四种方式实现js异步编程

    要求 使用回调、Promise、generator和asnyc/await四种方式,请求api/data中的数据 ...

  • 异步操作和Async函数

    异步操作和Async函数 异步操作 异步编程的四种方式:回调函数、事件监听、发布/订阅、Promise。 为什么N...

  • js 中的异步编程

    一、js 中异步编程的四种方式 1.回调函数 优点:简单、容易理解和部署 缺点:不利于代码的阅读和维护,各个部分之...

  • Gevent高并发网络库精解

    进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在python...

  • Gevent

    前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...

  • Gevent简明教程

    前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...

  • 异步编程的困惑

    《深入浅出 Node.js》阅读随笔 众所周知,Node.js 虽然也有部分同步编程的方式,但主要还是以后异步编程...

  • 1-1作业参考答案

    模块一:函数式编程与 JS 异步编程、手写 Promise参考答案 简答题 一、谈谈你是如何理解 JS 异步编程的...

网友评论

      本文标题:js异步编程的四种方式

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