10行代码实现简易版的Promise
标签:
JavaScript
实现之前,我们先看看Promise的调用
const src = 'https://img-ph-mirror.nosdn.127.net/sLP6rNBbQhy0OXFNYD9XIA==/799107458981776900.jpg?imageView&thumbnail=223x125&quality=100'const promise = new Promise(function (resovle, reject) { var img = document.createElement('img') img. = function () { resovle(img) } img. = function () { reject() } img.src = src }) promise.then(function (img) { console.log(img.width) }, function () { console.log('错误') }).then(function (img) { console.log(img.height) document.body.appendChild(img) })
下面我们一边分析,一边实现自己的promise。
首先Promise是一个构造方法,并且初始化的时候传入了一个函数作为参数
var MyPromise = function (doSomething) { this.doSomething = doSomething }
then方法很明显可以看出是Promise的实例方法,并且可以实现链式调用,说明在then方法中返回了Promise实例,即this
MyPromise.prototype.after = function (resovle, reject) { this.doSomething(resovle, reject) return this }
此处的after方法相当于then方法。那么MyPromise的简易版就完成了。他的调用方法和示例的调用是一样的。
const src = 'https://img-ph-mirror.nosdn.127.net/sLP6rNBbQhy0OXFNYD9XIA==/799107458981776900.jpg?imageView&thumbnail=223x125&quality=100'const mypromise = new MyPromise(function (resovle, reject) { var img = document.createElement('img') img. = function () { resovle(img) } img. = function () { reject() } img.src = src }) mypromise.after(function (img) { console.log(img.width) }, function () { console.log('错误') }).after(function (img) { console.log(img.height) document.body.appendChild(img) })
后记:相比Promise,这个实现过于简单,功能上简直不值一提。仅仅抛砖引玉。
原文出处:https://www.cnblogs.com/linax/p/9570828.html
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦