• 手写一个promise


    promise是什么?

    promise是一个解决回调地狱的函数,是一个强大的异步回调方案。es6将其弄可以直接使用!

    我们知道promise中共有三种状态

    pending 过渡态
    fulfilled 完成态
    rejected 失败态

    function Promise(exector) {
                let self = this;
                //status表示一种状态
                let status = "pending";
                let value = undefined;
                let reason = undefined;
                //成功执行
                function resolve(value) {
                    if (status == 'pending') {
                        self.value = value;
                        self.status = "resolve";
                    }
                }
                //执行失败
                function reject(reason) {
                    if (status == 'pending') {
                        self.reason = reason;
                        self.status = "reject"
                    }
                }
                //对异常操作
                try {
                    exector(resolve, reject)
                } catch (e) {
                    reject(e)
                }
                //设置promise的then方法
                Promise.prototype.then = function(reject, resolve) {
                    let self = this;
                    if (this.status == 'resolve') {
                        reject(self.value)
                    }
                    if (this.status == 'reject') {
                        resolve(self.reason)
                    }
                }
            }
            //new 一个promise  进行测试  
            let promise = new Promise((reject, resolve) => {
                resolve("return resolve");
            });
            promise.then(data => {
                console.log(`success${data}`);
    
            }, err => {
                console.log(`err${err}`);
    
            })

    简单 的 promise就实现了 

  • 相关阅读:
    html----有关图像
    前端开发初学者
    angular js 正序倒叙
    viewpager无线轮播获取网络图片
    angular js 球星
    angular js shopping
    angular js 公告墙
    Android 常用正则表达式
    Android 内存泄漏
    TCP/IP,必知必会的
  • 原文地址:https://www.cnblogs.com/wsjaizlp/p/11205463.html
Copyright © 2020-2023  润新知