文章目录
一、Promise是什么?
ECMAscript 6 原生提供了 Promise 对象。
Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息
二、Promise的三种状态
1.Pending(进行中)
2.Fulfilled(已成功)
3.rejected(已失败)
Promise对象的三种状态不受外界的影响,只有Promise中存放的将来会结束的时间才会影响。
Promise状态一旦改变,不可逆
Pending ==> Fulfilled
Pending ==> rejected
三、Promise对象创建
Promise是一个构造函数,在创建对象的时候需要传入一个回调函数
回调函数有2个参数,分别代表resolve(解决),reject(拒绝),并且都是函数
调用resolve函数,代表Promise的状态会从Pending --> fulfilled
调用reject函数,代表Promise的状态会从Pending --> rejected
代码如下(示例):
let promise = new Promise(function(resolve,reject){
// 主要编写的是将来会结束的事件代码(异步请求)
// 调用resolve函数
reject("error");
// resolve("ok");
})
console.log(promise)
四、Promise中then和catch方法
1.then
如果promise状态为fulfilled,则调用then方法来处理对应的成功的逻辑
2.catch
如果promise状态为reject,则调用catch方法来处理对应的失败的逻辑
1)then和catch方法的参数也是一个函数,而且这个函数返回的都是一个新的Promise对象
2)then和catch在函数中可以return一个值,如果没有return 默认代表return undefined
3)如果return的是一个非Promise对象,那么会通过Promise.resolve()将返回的值转成一个状态为fulfilled的Promise对象
4)如果return的是一个Promise对象,则返回一个新的Promise对象,Promise对象的状态由返回的Promise对象状态来确定
代码如下(示例):
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script