亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消