![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Promise A+的实现
从0手写Promise A+ 规范并实现async和await的原理
问也去
GIS开发工程师,欢迎交流学习
展开
-
6.aync和await的原理及实现
generator函数generator 返回一个遍历器对象function* read () { console.log(1) yield 1 console.log(2) yield 2 console.log(3) yield 3}let it = read()it.next()it.next()it.next()generator函数能够分步执行,实际上是利用switch的原理,每一次执行改变switch里面的条件,使之走向原创 2021-10-09 20:18:32 · 1219 阅读 · 0 评论 -
5.Promise值得穿透和静态方法的实现
值得传递then方法不调用参数,可以一直把参数往后传递let p = new Promise((resolve, reject) => { resolve('sx')})p.then() .then() .then((value) => { console.log(value) //sx }, (reason) => { console.log(reason) })实现这个原理很简单,只需要在th原创 2021-10-06 12:55:17 · 215 阅读 · 0 评论 -
4.Promise链式调用的实现
Promise可以实现链式调用,既then之后可以接着使用then方法let p = new Promise((resolve, reject) => { resolve('a')})p.then((value) => { return value}, (reason) => { return reason}).then((value) => { console.log(value) //a})分析then的方法执行后返回一个.原创 2021-10-04 15:21:07 · 1065 阅读 · 0 评论 -
3.Promise的异步处理
之前的Promise实现是在同步状态下进行的,试想一下,如果executor里面执行的是异步,根据js执行的顺序,调用then的时候,Promise对象的状态还是PENDING,以下代码无输出:const Promise = require("./Promise")const p = new Promise((resolve, reject) => { setTimeout(() => { resolve('sx') }, 0);})p.then(.原创 2021-10-03 20:18:22 · 105 阅读 · 0 评论 -
2.Promise的基本实现
Promise的基本用法是:创建一个Promise,传入一个回调函数,该回调有两个参数函数,在回调中执行用户操作,如果成功,调用第一个参数回调,如果失败,调用第二个参数回调。其有一个then方法,调用then方法会传入两个函数参数,分别对应成功状态的输出和失败状态的输出分析Promise传入的参数回调函数会自动执行Promise本身有一个状态,成功的回调和失败的回调分别会将状态改变then通过检测状态,来选择执行哪个方法基本实现如下:const PENDING = "PENDING".原创 2021-10-03 19:57:52 · 72 阅读 · 0 评论 -
1.高阶函数、函数柯里化、发布订阅模式和观察者模式的实现
要想实现Promise A+规范,必须要扫清一下知识上的盲点,在这里梳理一下高阶函数、函数柯里化、发布订阅模式和观察者模式。高阶函数概念一个函数返回另一个函数一个函数的参数可以接受一个函数高阶函数可以给函数进行功能扩展function core (...arg) { console.log('core', arg)}Function.prototype.before = function (fn) { //剩余运算符,接受不定参数 return (....原创 2021-10-03 11:44:30 · 88 阅读 · 0 评论