<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            function MyPromise(execulator){
                let self = this;
                self.status = 'pending';
                self.value = undefined;
                self.reason = undefined;
                function resolve(value){
                    if(self.status === 'pending'){
                        self.status = 'resolved';
                        self.value = value;
                    }
                }
                function reject(reason){
                    if(self.status === 'pending'){
                        self.status = 'rejected';
                        self.reason = reason;
                    }    
                }
                execulator(resolve,reject);
                MyPromise.prototype.then = function(onFulfilled,onRejected){
                let self = this;
                if(self.status === 'resolved'){
                    onFulfilled(self.value)
                }
                if(self.status === 'rejected'){
                    onRejected(self.reason);
                }
            }
        }
            
            let p = new MyPromise((res,rej)=>{
                try{
                    //re('finished') 捕获到报错执行catch语句
                    res('finished')
                }catch(ex){
                    rej('error')
                }
            })
            p.then((res)=>{
                console.log(res)
            },(err)=>{
                console.log(err)
            })
        </script>
    </body>
</html>

参考链接:https://www.php.cn/faq/440756.html


阳哥
14 声望0 粉丝

一个code爱好者,一个户外运动的爱好者,一个喜欢音乐的爱好者。