美文网首页
js promise使用

js promise使用

作者: 醉青风 | 来源:发表于2021-08-12 14:28 被阅读0次

用途:

1、主要用于异步计算()
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作promise,帮助我们处理队列
其实就是操作完之后会告诉我们这个事情结束了

基础

1.promise是一个对象,对象和函数的区别就是对象可以保存状态,函数不可以(闭包除外)
2.并未剥夺函数return的能力,因此无需层层传递callback,进行回调获取数据
3.代码风格,容易理解,便于维护
4.多个异步等待合并便于解决
5.可以进行链式操作
6.Promise对象的状态改变,只有两种可能:
从pending变为fulfilled
从pending变为rejected。
这两种情况只要发生,状态就凝固了,不会再变了。

使用

基础用法

 new Promise(
    function (resolve, reject) {
      // 一段耗时的异步操作
      resolve('成功') // 数据处理完成
      // reject('失败') // 数据处理出错
    }
  ).then(
    (res) => {console.log(res)},  // 成功
    (err) => {console.log(err)} // 失败
  )

分开写法

let pro =    new Promise(
function (resolve, reject) {
  // 一段耗时的异步操作
 resolve('成功') // 数据处理完成
  // reject('失败') // 数据处理出错
}
)
pro.then(
     (res) => {console.log(res)},  // 成功
     (err) => {console.log(err)} // 失败
)

链式操作

let pom = new Promise(function(rsol,reject){
  rsol('成功')
  // reject('失败返回')
})
pom.then(
  (e)=>{
    console.log(e)
    return '再次成功'
  },
  (e)=>{
    console.log(e)
    throw '再次失败'
  }
).then(
  (e)=>{
    console.log(e)
  },
  (e)=>{
    console.log(e)
  }
)

这里可以无线连下去

拓展 async 和 await

async

async 其实就是把函数执行结果改变成一个promise对象,执行之后点then(),和promise用法一样,只是更简洁,

  async function pom(){
      throw '失败了'
    }
    pom().then(
      (e)=>{
        console.log(e)
      },
      (e)=>{
        console.log(e)
      }
    )

await

官方表达是 await右边最好是promise对象,可以直接取得promise对象的值,直接省去了点then()的阶段,但是只能在async 函数里面,不然没办法用

  async function pom(){
      return '成功了'
    }
    async function pomxs(){
       console.log(await pom())
    }
    pomxs()

相关文章

网友评论

      本文标题:js promise使用

      本文链接:https://www.haomeiwen.com/subject/psdlbltx.html