前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >介绍一下 promise,及其底层如何实现

介绍一下 promise,及其底层如何实现

原创
作者头像
愤怒的小鸟
修改2021-10-13 17:55:41
8460
修改2021-10-13 17:55:41
举报
文章被收录于专栏:web shareweb share

1. 特性

Promise 是一个对象,保存着未来将要结束的事件,有两个特性:

  • 对象的状态不受外部影响,Promise 对象代表一个异步操作,有三种状态,pending进行中,fulfilled已成功,rejected已失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作无法改变这个状态,这也就是promise名字的由来
  • 一旦状态改变,就不会再变,promise对象状态改变只有两种可能,从pending改到fulfilled或者从pending改到rejected,只要这两种情况发生,状态就凝固了,不会再改变,这个时候就称为定型resolved

2. 简单代码实现

代码语言:javascript
复制
class PromiseM {
    constructor (process) {
        this.status = 'pending'
        this.msg = ''
        process(this.resolve.bind(this), this.reject.bind(this))
        return this
    }
    
    resolve (val) {
        this.status = 'fulfilled'
        this.msg = val
    }
    
    reject (err) {
        this.status = 'rejected'
        this.msg = err
    }
    
    then (fufilled, reject) {
        if (this.status === 'fulfilled') {
            fufilled(this.msg)
        }
        
        if (this.status === 'rejected') {
            reject(this.msg)
        }
    }
}


// 测试
var mm = new PromiseM(function(resolve, reject) {
    resolve('123');
})

mm.then(function(success) {
    console.log(success);
}, function() {
    console.log('fail')
})

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 特性
  • 2. 简单代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档