Promise 对象

Promise 对象用于处理异步请求,保存一个异步操作最终完成(或失败)的结果

 

语法

复制代码
new Promise(
    /* executor */
    function(resolve, reject) {...}
);

/*
   来自谷歌翻译
      promise:承诺,约定
      resolve:解决,决定,下决心
      reject:拒绝,驳回,抵制 
*/
复制代码

参数:

promise 构造函数接受一个 executor 函数作为参数,该函数的两个参数分别是 resolve 和 reject,它们是两个函数(executor 函数 在 Promise 构造函数返回新对象之前被调用)。

resolve 函数被调用时,将 promise 对象从 “未完成” 变为 “成功” (即 pending --> fulfilled)

reject 函数被调用时,将 promise 对象从 “未完成” 变为 “失败” (即 pending --> rejected)

 

描述

promise 对象是一个代理对象(代理一个值),被代理的值在 promise 对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法,使得异步方法可以像同步方法那样返回值,但不是立即返回最终执行结果,而是一个能代表未来出现的结果的 promise 对象。

上面提到过,一个 promise 对象有三个状态:

• pending:初始状态,不是成功或失败状态

• fulfilled:成功完成

• rejected:失败

pending 状态可能触发 fulfilled 状态并传递一个值给相应的状态处理方法,也可能触发 rejected 状态并传递失败信息。当其中任一种情况发生时,promise 对象的 then 方法绑定的处理方法就会被调用。

(then 方法包含两个参数:onfulfilled 和 onrejected,也都是函数。当 promise 对象的状态为 fulfilled 时调用,调用 then 的 onfulfilled 方法;反之,调用 onrejected 方法。所以异步操作的完成和绑定处理方法之间不存在竞争)

then 方法的使用语法:

promise.then(function(value) {
  // onfulfilled
}, function(error) {   // 第二个参数是可选的,不一定要提供
  // onrejected 
});

 

示例:

复制代码
    let myFirstPromise = new Promise(function(resolve, reject){
        // 当异步代码执行成功时,调用resolve()方法;失败时,调用reject()方法
        // 此处,使用定时器来模拟异步代码,实际编码可能是XHR请求或HTML5的一些API方法
        setTimeout(function(){
            //resolve('成功!')  //代码执行成功,调用resolve()方法
            resolve('成功!')
        }, 2000)
    })
    
    myFirstPromise.then(function(successMessage){
        // successMessage 是上面调用resolve()方法传入的值
        // successMessage 参数不一定非要是字符串类型,这里只是举个例子
        console.log('Yay!'+successMessage)
    })

    console.log('看看我的位置在哪里?')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值