Promise

	promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件监听——更合理和强大。
	promise可以理解为一个容器,里面保存着某个未来才会结束的事件的结果。promise是一个对象,从他可以获取异步操作的消息。promise提供统一的api,各种异步操作都可以用同样的方法进行处理

示例:
1、Promise本身是一个状态机,每一个Promise实例只能有三个状态,pendingfulfilledreject,状态之间的转化只能是pending -> fulfilledpending-> reject,状态变化不可逆。
2、Promise有一个then方法。该方法可以被调用多次,并且返回一个Promise对象
3、支持链式调用
4、内部保持有一个value值,用来保存上次执行的结果值,如果报错,则保存的是异常信息
由于Promise为状态机,我们需要先定义状态

var PENDING = 0;//进行中
var FULFILLED = 1;//成功
var REJECTED = 2;//失败

自己封装的Promise

// 1.原生实现一个promise
        function MyPromise(){
            this.status = 'pending';
            this.msg = '';
            var process = arguments[0];
            var that = this;
            process(function(){
                that.status = 'resolve';
                that.msg = arguments[0]
            },function(){
                that.status = 'reject';
                that.msg = arguments[0]
            })
        }
        MyPromise.prototype.then = function(){
            if(this.status == 'resolve'){
                arguments[0](this.msg)
            }
            if(this.status == 'reject'){
                arguments[1](this.msg)
            }
        }
        var myPm = new MyPromise(function(resolve,reject){
            resolve('成功')
        })
        myPm.then(function(res){
            console.log(res)
        },function(){
            console.log('err')
        })
        myPm.then((res1)=>{
            console.log('res1')
        },()=>{
            console.log('err')
        })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值