ES6之Promise

Promise是ES6的新特性,Promise被定义为一个构造函数

Promise
//输出
ƒ Promise() { [native code] }

我们创建一个Promise对象,观察它有哪些属性和方法

可以看到:

  1. Promise对象有两个属性:状态和结果
  2. 原型对象上有then()、catch()、finally()等方法
  3. 构造函数里面有resolve()、reject()等方法

1 Promise的特点

Promise对象的状态不受外界影响,有3种状态:pending、fullfilled、rejected。这些状态的改变由异步操作结果决定(resolve()方法和reject()方法)

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

Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected

2 创建Promise对象的方式

  • new Promise
  • then的返回值
  • catch 的返回值
  • finally 的返回值
  • async 函数的返回值

注意,我们使用new Promise()构造函数实例化一个Promise对象时,构造函数的参数是一个函数,且该函数的参数也是函数,且固定为resolve和reject,举例:

var probj = new Promise((aaa,bbb)=>{
    aaa('这是啥')
})
// 打印probj
probj
//打印结果
Promise {<fulfilled>: '这是啥'}

如果我们多传递一个参数,则会报错

var probj = new Promise((resolve,reject,three)=>{
    resolve('这又是啥')
})
VM1232:1 Uncaught SyntaxError: Invalid or unexpected token
probj
Promise {<fulfilled>: '这又是啥'}

3 更改promise状态方式

  • resove() fulfilled 已接受
  • reject() rejected 已拒绝

4 [[PromiseResult]] 赋值有几种方式

  • resolve reject的实参
  • then 的return
  • async 的return
  • await 返回值
var probj = new Promise((resolve,reject)=>{
    resolve({name:'szj'})
})
probj.then((res)=> {
            console.log(res)
        })
{name: 'szj'}
Promise {<fulfilled>: undefined} //注意,这个打印是执行probj.catch的返回值(返回值也是一个Promise对象),不是probj实例
//下面才是probj实例
probj
Promise {<fulfilled>: {[[PromiseState]]: "fulfilled", [[PromiseResult]]: Object}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值