Promise的使用

什么是 promise是异步编程的一种解决方案.

常见的异步编程 setTimeout ajax readfile writefile

promise有三个状态:
  Pending
  Resolved
  Rejected
 初始状态  Pending
 成功调用 resolve
 失败调用 reject

Promise 基本用法

var flag = false
let p = new Promise((resolve, reject) => {
    if (flag) {
        resolve("成功")
    } else {
        reject("失败")
    }
})
.then()接收的是resolve()成功状态的函数并且可以接受参数
.catch()接受的是reject()失败状态的函数并且可以接受参数
p.then((res) => {
    console.log(res)
}).catch((rej) => {
    console.log(rej)
})

Promise的静态方法

 Promise.resolve()
 Promise.reject()
 Promise.all()

Promise.resolve() 它使得promise对象直接将成功的resolve函数返回出去,
并把成功传到后面then添加的成功函数中

 let a1 = Promise.resolve("成功")
 a1.then((res) => {
    console.log(res)
})

let a2 = new Promise(function (resolve) {
    resolve("成功")
})
a2.then((res) => {
    console.log(res)
})
以上这两句代码意思相同

Promise.reject
同上,但是返回的是rejected状态的promise对象

romise.all() 它接收一个promise对象组成的数组作为参数,并返回一个新的promise对象。
all方法必须保证所有的promise都执行resolve后才能执行成功函数

当数组中所有的对象都回调成功(resolve)时,才会执行.then() 并把所有成功的resolve()参数,
依次添加组成一个新的数组,并以新的数组作为新对象resolve的返回值
当数组中有一个对象为reject时,回调失败(reject),执行.catch()
  let psal = Promise.all([
    Promise.resolve(5),
    Promise.resolve(6),
    Promise.resolve(7)])

    psal.then((res) => {
       console.log('resolve', res)  // [5, 6, 7]
    }).catch((rej) => {
       console.log('reject', rej)
    })

当数组中有一个对象reject时,新对象状态变为reject,就会被.catch()方法接受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值