JavaScript Promise使用

异步回调地狱

Promise then catch 链式调用,但也是基于回调函数

async/await同步语法,撤掉消灭回调函数

1、为什么需要Promise:

回调地狱:

ajax.get(xxx, () => {

  ajax.get(xxx, () => {

   ajax.get(xxx, () => {

      ...

    })  

  })

})

2、Promise的基本使用

Promise是一个构造函数,通过new关键字实例化对象

语法:

new Promise((resolve, reject) => {})

Promise 接受一个函数作为参数

在参数函数中接受两个参数,也是函数,

resolve:

reject:

promise实例

state:状态

result:结果

1)promise的状态

第一种状态: pending

第二种状态:fulfilled

第三种状态:rejected

2) promise状态的改变

通过调用resolve() 和 reject() 改变当前promise对象的状态

 

 

 

 resolve():调用函数,使当前promise对象的状态改成fulfilled

reject():调用函数,使当前promise对象的状态改成rejected

promise状态的改变是一次性的

3) promise的结果

 通过调用resolve,传递参数,改变当前promise对象的结果

Promise的方法

1) then方法

 promise里的resolve或者reject控制then里的参数函数,到底执行成功的函数,还是失败的函数

 

 then会返回一个新的Promise,状态为pending

Promise的状态不改变,不会执行then里的方法

使用return 可以将 t 的状态改成fulfilled

没有return,也会返回个undefined

前一个then的return的值作为后一个return then里函数的参数,前提是Promise构造函数的里resolve要执行

 

 

 

Catch 方法

当promise的状态改为rejected时被执行,
当promise执行体中出现代码错误时也会被执行

用Promise解决回调地狱

 简化后:

 

posted @ 2024-10-14 00:15  hotMemo  阅读(9)  评论(0编辑  收藏  举报