专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

简易版的Promise实现

构造函数

function Promise(fn) {
    this.status = "pending"; // promise的状态 pending/fullfiled/rejected,不可逆转
    this.fn = fn; // 保存promise传入的回调,在then里面执行
}

then函数

Promise.prototype.then = function(onFullfilled, onRejected) {
    var self = this;
    // 利用闭包的特性,使得fn执行的时候,还能找到then里面的onFullfilled,并且执行
    var resolve = function(value) {
        // 保证状态不可逆转
        if(self.status === "pending") {
            self.status = "fullfiled";
            onFullfilled(value);
        }
    }
    var reject = function(reason) {
        // 保证状态不可逆转
        if(self.status === "pending") {
            self.status = "rejected";
            onRejected(reason);
        }
    }
    this.fn(resolve, reject);
    return this;
}

调用例子

new Promise(function(resolve, reject) {
    setTimeout(function() {
        if(Math.random() > 0.5) {
            resolve('fullfiled')
        } else {
            reject('reject');
        }
    }, 1000)
}).then(function(value) {
    console.log(value)
}, function(reason) {
    console.log(reason)
})

文章永久链接:https://tech.souyunku.com/42967

未经允许不得转载:搜云库技术团队 » 简易版的Promise实现

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们