美文网首页
promise的理解

promise的理解

作者: 波仔_4867 | 来源:发表于2021-05-09 13:34 被阅读0次
    promise用来解决回调地狱的问题,把异步的代码用同步的方式来实现

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

    一个Promise的三种状态
    pending: 初始状态,既不是成功,也不是失败状态。
    fulfilled: 意味着操作成功完成。
    rejected: 意味着操作失败。

    Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。
    Resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
    Reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

    Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。


    demo1==============================================
       let flag = true;
       function task() {
           return new Promise(function (resolve, reject) {
               //同步代码,立即执行
               console.log('执行promise回调中的代码');  
               if (flag) {
                   // 只有调用resolve时,才会执行then中的回调
                   // resovle触发的then中的回调是异步操作
                   resolve('success')
               } else {
                   // 只有调用reject时,才会执行catch中的回调
                   // reject触发的catch中的回调是异步操作
                   reject('error')
               }
           })
       }
       task()
       .then(function(msg){
           console.log(msg);
       })
       .catch(function(err){
           console.log(err);
       })
      promise.all([ajax1(),ajax2()])当ajsx1和ajax2都返回数据时触发
      .then()当ajsx1和ajax2都成功时调用的函数
       .catch()当ajsx1和ajax2任一函数失败时调用的函数
      promise.race([ajax1(),ajax2()])看谁先执行完函数时触发
       .then()当ajsx1和ajax2谁先执行完且成功是调用
       .catch()失败时调用

       asyne和await是promise的语法糖 
       asyne定义了一个异步函数,消除了promise中then的链式调用
       await 后面的同步代码
       asyne function reader(){
       try{     处理异常 如果此时有错误会被捕获
           let result=await ajax()
             task(result)
   }.catch(err){
       console.log('异常时运行的代码')          
}          
}

相关文章

  • Promise async/await

    Promise async/await 参考初探promise promise 理解 JavaScript ...

  • Promise原理解析

    Promise原理解析 标签(空格分隔): Node.js Promise原理解析 简介 Promise 对象用于...

  • 【前端 JavaScript 高级】06 - Promise的入

    第 1 章 Promise的理解和使用 1.1 Promise 是什么? 1.1.1 理解 抽象表达 Promis...

  • Promise用法详解

    参考promise|深入理解 promise:promise的三种状态与链式调用 Promise对象只有三种状态 ...

  • Promise - 04 Promise 的理解和使用

    Promise 的理解和使用 1: Promise 是什么? 抽象表达Promise 是 JS 中进行异步编程的新...

  • Promise 的理解

  • Promise的理解

    Promise的理解:Promise是异步编程的一种方式,以同步的方式进行编程,避免了层层嵌套的回调函数,更加合理...

  • promise的理解

    promise是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作); Promise.all() P...

  • Promise的理解

    如何解决异步 在Promise没有出现之前,我们通过回调函数,进行解决异步操作 利用Promise重写 上面的代码...

  • Promise的理解

网友评论

      本文标题:promise的理解

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