zoukankan      html  css  js  c++  java
  • ES6----Promise(部分)

    Promise

      Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大。

       Promise是一个对象,它从可以获取异步操作的消息。Promise提供统一的API,各种异步操作可以用的方法进行处理。

      Promise对象有以下两个特点:

      1.对象的状态不受外界影响。promise对象代表一个异步操作,有三种状态:pending(进行中),fulfilled(已成功)和rejected(已失败)。

      2,一旦状态改变,就不会再变,任何时候都可以得到这个结果。

      好处:有了promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,promise对象提供统一的接口,使得控制异步操作更加容易。

      缺点:无法取消promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪个阶段。

      

      Promise.prototype.then()

      then方法返回的是一个新的Promise实例,因此可以采用链式写法,即then方法后面再调用另一个then方法。  

    getJSON("/posts.json").then(function(json) {
      return json.post;
    }).then(function(post) {
      // ...
    });
    

      采用链式的then,可以指定一组按照次序调用的回调函数。这时,前一个回调函数,有可能返回的还是一个Promise对象(即有异步操作),这时后一个回调函数,就会等待该Promise对象的状态发生变化,才会被调用。

      Promise.prototype.catch

      promise抛出一个错误,就被catch()方法指定的回调函数捕获。

    const promise = new Promise(function(resolve, reject) {
      throw new Error('test');
    });
    promise.catch(function(error) {
      console.log(error);
    });
    

      

      Promise.prototype.finally()

      finally()方法用于指定不管promise对象最后状态如何,都会执行的操作。

    promise
    .then(result => {···})
    .catch(error => {···})
    .finally(() => {···});
    

      上面代码中,不管promise最后的状态,在执行完thencatch指定的回调函数以后,都会执行finally方法指定的回调函数。

      

      Promise.all()

      Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。

      

    集思广益,仅供学习,侵权即删!!
  • 相关阅读:
    【组合数学】 03
    【组合数学】 02
    【微积分】 10
    马未都说收藏:陶瓷篇(18、19)五彩瓷、斗彩
    马未都说收藏:陶瓷篇(1)历史朝代、陶器
    maven pom.xml常用标签 Exclusions plugins是什么意思
    Java日志记录工具SLF4J介绍
    Spring Context及ApplicationContext
    RabbitMQ中Queue详细介绍
    收藏专家马未都简介
  • 原文地址:https://www.cnblogs.com/hudunyu/p/13434231.html
Copyright © 2011-2022 走看看