美文网首页
Promise对象

Promise对象

作者: 黑色的五叶草 | 来源:发表于2018-09-15 20:17 被阅读0次

    promise 是什么

    • 按照用途来解释:
      1. 主要用于异步计算
      2. 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
      3. 可以在对象之间,传递和操作promise,以帮助我们处理队列

    promise 的由来

    • javascript 包含大量的异步操作: 异步操作可以避免页面冻结
      1. javascript 为检查表单而生
      2. 创造它的首要目标是操作DOM
      3. nodeJs的出现:无堵塞,高并发
    • 异步:AB工作的完成顺序,和他们交付的完成时间顺序无关

    异步操作的常见语法

    1. ajax请求:先调用外部函数,再执行内部回调函数,当外部函数执行完成,内部回调函数就会被执行


      image.png

    异步的出现场景:

    • 浏览器中异步操作以事件为主
    • 回调主要出现在ajax请求和File API

    经典示例:

    • 异步回调的问题:https://www.imooc.com/video/16611
      在异步回调过程中,无法正常使用try catch,只能通过return callback(err)函数的错误看出问题。(原因是:回调函数在执行的时候,已经和调用它的函数不在同一个堆栈中)

    promise 入门

    • promise的使用:function(resolve, reject){} 传入的匿名函数称为执行器
      resolve(), reject() 调用后,会改变new promise实例的状态,
      实例的状态改变后,会调用then函数内部的处理函数


      image.png
    • promise详解:
      • promise是一个代理对象,它和原先要进行的操作并无关系
      • 它通过引入一个回调,避免更多的回调
    • promise状态


      image.png
      image.png
      image.png
    • 简单的promise实例:https://www.imooc.com/video/16613
    console.log("here we go");
    new Promise(resolve => {
        setTimeout(() => {
          resolve('hellow');
        }, 2000);
      }).then(value => {
          console.log(value + "word");
    });
    
    console.log("here we go");
    new Promise(resolve => {
        setTimeout(() => {
          resolve('hellow');
        }, 2000);
      })
    .then(value => {
          console.log(value);
          return new Promise(resolve => {
          setTimeout(() => {
            resolve('world');
          }, 2000);
      });
    })  
    .then(value => {
        console.log(value + "world");
    })
    

    (本帖参考自慕课网讲师:Meathill)

    相关文章

      网友评论

          本文标题:Promise对象

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