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 的基本用法;

  

原文地址:https://www.cnblogs.com/qqfontofweb/p/13155561.html