zoukankan      html  css  js  c++  java
  • promise方法总结

    优点:1、对象的状态不受外界的影响,只有异步操作的结果可以决定是那种状态;2、状态一旦改变,就不会再次改变。任何时候都可以得到这个结果。在这里跟(event)事件不同,如果错过了这个事件结果再去监听,是监听不到event事件的。

    缺点:1、promise一旦执行无法取消。2、如果不设置回调函数promise内部抛出的错误,不会反映到外部。3、当处于pending(进行中)的状态时,无法得知进行到那一阶段(刚开始或者即将完成)。

    基本用法:es6规定,promise对象是一个构造函数,用来生成promise实例。promise构造函数接受一个函数作为参数,该函数有两个参数分别是resolve和reject;resolve表示成功的回调,reject表示失败的回调;

    then方法:then方法返回的是一个新的promise实例。注意:如果采用链式的then,可以指定一组按照次序调用的回调函数,如果前一个回调函数返回的是promise,后一个函数会等前一个状态发生改变才会调用。

    catch方法:catch方法是在promise发生错误时的回调。注意:如果promise状态已经变成resolved,在抛出错误时无效的。promise错误具有‘冒泡’性质,会一直往上传递,直到被捕获。

    finally方法:finally方法指定无伦最后promise最后状态如何都会执行的函数。注意:finally不接受任何参数,这就意味着无法直到前面的promise状态。

    all方法:all方法用于将多个实例包装成一个新的promise实例。注意:只有当所有的实例都变成fulfilled时,包装的实例状态,才会变成fulfilled,此时他们的返回值会传递给新的回调函数,只要其中有一个被rejected,包装的实例状态就会变成rejected,此时第一个被rejected的实例返回值会传递给新的回调。

    race方法:race方法同样是将多个实例包装成一个新的实例。跟上面的all方法类似。

    allSettled方法:allSettled方法接收一组promise实例作为参数,包装成一个新的实例。注意:只有等所有的实例都返回结果,才会结束。返回的结果不论成功失败,状态总是fulfilled,不会是失败。

    any方法:接收一组promise实例作为参数,只要有一个变为fulfilled状态,包装的实例就会变成fulfilled状态,如果所有的参数都变成rejected状态,就会变成rejected状态。

    reject方法:reject方法会返回一个新的实例,状态为rejected。回调函数立即执行。

    try方法:在实际开发中遇到无法区分函数是同步还是异步操作时,但是还想用promise来处理,可以使用try方法。

    resolve方法:将现有对象转为promise对象,它的参数分为四种情况:

    1、参数是一个promise实例;如果参数是promise实例,则不作修改,原样返回。

    2、参数是一个thenable对象,是指由then方法的对象;该方法会将这个对象转为promise对象,然后立即执行then方法。

    3、如果不是具有then方法的对象或者根本不是对象;如果参数是一个原始值,或者是一个不具有then方法的对象,则promise。resolve方法返回一个新的promise对象,状态为resolved

    4、不带有任何参数;如果不带有任何参数会直接返回一个resolved状态的promise对象。

  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/lljun/p/11804086.html
Copyright © 2011-2022 走看看