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

浙公网安备 33010602011771号