zoukankan      html  css  js  c++  java
  • Promise原理实现(一):前置知识点

     

    实现promise首先需要了解如下知识点:

    1: 高阶函数 (一个函数作为另外一个函数的参数,这个包含的函数就是高阶函数): outer是一个高阶函数,inner函数作为一个参数传递;此处也是闭包的应用;foo() bar()的执行可以称为切片编程:AOP, 在逻辑执行前加入了某些执行逻辑,切片编程

    function outer(inner){
         
        bar()
      
        return (...args) => {
        foo()  
        // ...
        inner()
        this(...args)
      }
    }
    function inner(){
      // xxx   
    }
     
    

    2: 发布订阅

    const middle = {  // 可以看成发布订阅的一个中介对象,存储发布和订阅方法以及事件池
        arr: [], // 事件池
        on(fn) { // 订阅事件:也可以叫做存储事件到事件池中
            this.arr.push(fn)
        },
        emit(fn){ // 发布事件: 执行订阅的方法
            this.arr.forEach(fn => fn())
        }
    }
    
    // 例如我要 读取2个文件,打开后需要知道是否读取完毕
    const fs = require('fs')
    
    event.on(
    function() { console.log('读了一个') }) event.on(function() { Object.keys.forEach(key => { if(key.length === 2){ // 读取完毕 } }) }) let filecontent = {} fs.readFile('./aa.txt',function(err,data){ filecontent.name = data middle.emit() }) fs.readFile('./bb.txt',function(err,data2){ filecontent.age = data2 middle.emit() })

     3: promise A+ 规范和promise 的基本用法;

      

  • 相关阅读:
    dubbo熔断,限流,服务降级
    jmeter命令行运行与生成报告
    Java堆内存设置
    性能测试之互联网应用需求建模分析
    java命令--jmap命令使用(查找内存泄漏对象)
    WPS宏不可用解决方法
    JDBC
    异常
    Java中常用集合操作
    java抽象、接口 和final
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/13155561.html
Copyright © 2011-2022 走看看