promise

一.promise是什么?

         1) Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件

——更合理和更强大。

        2) 所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通

常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操

作的消息。

二.promise对象的特点

1)对象的状态不受外界影响,Promise 对象代表一个异步操作,有三种状态:

Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)

2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。

三.promise的使用

首先是promise的使用语法

new Promise(function(resolve,reject){}/*code*/);

在实例化Promise时需要传入一个函数code作为参数,并且在Promise构造函数执行时

同步执行。如以下实例:

var a = new Promise(function(resolve,reject){
             var timer = setTimeout(function(){
                 console.log('哒哒哒');
             },1000);
         });

我们可以看到1秒后在控制台输出相应的结果,这就说明在实例化过程中,作为参数的

code函数也会执行。

从上面的实例中我们看到,code函数还有两个参数resolve和reject,其实这两个参

数也是函数,在code执行时被调用,下面我们具体来谈谈resolve和reject的用法。

四.resolve和reject的用法

1)resolve的用法

当我们在code函数中调用resolve方法时,Promise的状态就变成fulfilled,即操作成

功状态,还记得上面Promise.prototype上面的then和catch方法吗?当Promise状态

为fullfilled状态时执行then方法里的操作,

注意了,then方法里面有两个参数onfulfilled(Promise为fulfilled状态时执行) 和

onrejected(Promise为rejected状态时执行),步骤如下:

1) 实例化Promise(new Promise(function(resolve,reject)))

2) 用Promise的实例调用then方法

如下例:

var a = new Promise(function (resolve, reject) {
            var timer = setTimeout(function () {
                console.log('执行操作1');
                resolve('这是数据1');
            }, 1000);
        });
        p.then(function (data) {
            console.log(data);
            console.log('这是成功操作');
        });

简单的理解就是调用resolve方法Promise变为操作成功状态(fulfilled)执行then

方法里面onfulfilled里的操作。其实then里面的函数就是我们平时所说的回调函数,只

不过在这里只是把它分离出来而已。我们可以看到控制台上的输出结果如下所示:

2)reject的用法

看了上面的实例,   我相信应该也很容易理解reject方法了,   就是调用reject方法后,

Promise状态变为rejected,即操作失败状态, 此时执行then方法里面onrejected操

 作, 上面我们提到了then方法有两个参数, 一种是Promise状态为fulfilled时执行

(onfullfilled),一种是Promise状态为rejected时执行(onrejected),其实就是类

似于jquery里的hover方法里面的两个参数一样,来看看下面的例子:

var a = new Promise(function (resolve, reject) {
          var flag = false;
          if(flag){
            resolve('这是数据2');
          }else{
            reject('这是数据2');
          }
        });
        p.then(function(data){//状态为fulfilled时执行
            console.log(data);
            console.log('这是成功操作');
        },function(reason){ //状态为rejected时执行
            console.log(reason);
            console.log('这是失败的操作');
        });

我们可以看到输出的结果:

以上就是promise的部分用法,谢谢支持!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值