ES6之Promise

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。

三种状态
  • pending(就绪)
  • fullfilled(成功)
  • rejected(失败)
两种状态转变
  • pending----> fullfilled
  • pending----> rejected
    这两种状态之一一旦发生,状态就凝固了,不再改变了,我们称之为resolved
resolve rejecte
  • resolve 作用在 pending----> fullfilled
  • reject 作用在 pending----> rejected
.then .catch

then方法指定的回调函数在同步任务执行完后才执行

function PromiseTest() {
            return new Promise((resolve, reject) => {
                resolve("success")
            })
        }
        var p = new PromiseTest()
        p.then(val => {
            console.log(val);

        })
         let a = 1;
        console.log(a);

        console.log("同步任务");
/*output:
		1
		同步任务
		success*/
Promise.all
  • 接收一个数组作为参数,而且数组中每一个都是一个Promise实例。
  • 也可以不是数组,但必须有Iterator接口
const p = Promise.all([p1,p2,p3]);

由如下两种情况

  1. p1 , p2 , p3 都是fullfilled,则p的状态为fullfilled,且p1 p2 p3的返回值形成一个数组,传递给p的回调函数
  2. p1 p2 p3有一个为rejected,p的状态为rejected,此时第一个为rejected的返回值会传递给p的回调函数
Promise.resolve Promise.reject

相当于一个语法糖,可以简化代码

Promise.resolve('foo')
// 等价于
new Promise(resolve => resolve('foo'))
const p = Promise.reject('出错了');
// 等同于
const p = new Promise((resolve, reject) => reject('出错了'))

p.then(null, function (s) {
  console.log(s)
});
// 出错了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值