首页 web前端 js教程 es6之Promise的详细介绍

es6之Promise的详细介绍

Jun 26, 2017 pm 03:23 PM
promise

Promise

  1. Promise是一个对象,从它可以获取异步操作的消息;

  2. 特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending到Rejected);

  3. 缺点:一旦创建就会立即执行无法中途取消;如果没有回调函数,内部抛出的错误无法反映到外部;当处于Pending时,无法得知目前进展到哪一阶段;

  4. 一般不要在then方法里面定义Reject状态的回调函数(即then的第二个参数),而是使用catch方法;因为这种可以捕获前面then中的错误,也更接近同步写法(try/catch)

  5. catch方法返回的还是一个 Promise 对象,因此后面还可以接着调用then方法;catch方法之中,还能再抛出错误

  6. Promise.all方法用于将多个Promise实例,包装成一个新的Promise实例;Promise.all方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例;只有p1 p2 p3状态都变成fulfilled,p状态才会变成fulfilled;只要有一个rejected,p就变成rejected;

  7. Promise.race也是将多个Promise实例包装成新的Promise;只要有一个对象状态变了,p状态就会跟着变,返回先改变的对象的值传给p的回调函数;

  8. Promise.resolve将对象转为Promise对象,状态为resolved

    // 将thenable对象转为Promise对象var thenable = {
        then(resolve, reject) {
            resolve(200)
        }
    }var p = Promise.resolve(thenable)
    
    p.then((data) => {
      console.log(data)
    })  // 200
    登录后复制
  9. Promise.reject返回一个Promise对象,该实例状态为rejected;这个方法方法的参数,会原封不动地作为reject的理由,变成后续方法的参数。

  10. 两个附加方法

    // donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected)
            .catch(function(reason) {
                setTimeout(() => {throw reason}, 0)   
            });
    };// finallyPromise.prototype.finally = function (callback) {
        let P = this.constructor;return this.then(
            value  => P.resolve(callback()).then(() => value),
            reason => P.resolve(callback()).then(() => { throw reason })
        );
    };
    登录后复制

    done用于捕获任何时候可能出现的错误,并全局抛出;
    finally用于不管Promise对象状态如何,都会执行的操作,接受一个普通的回调函数作为参数(必执行);

以上是es6之Promise的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

言出必行:兑现承诺的好处和坏处 言出必行:兑现承诺的好处和坏处 Feb 18, 2024 pm 08:06 PM

在日常生活中,我们常常会遇到承诺与兑现之间的问题。无论是在个人关系中,还是在商业交易中,承诺的兑现都是建立信任的关键。然而,承诺的利与弊也常常会引起争议。本文将探讨承诺的利与弊,并给出一些建议,如何做到言出必行。承诺的利是显而易见的。首先,承诺可以建立信任。当一个人信守承诺时,他会让别人相信自己是一个可信赖的人。信任是人与人之间建立起的纽带,它可以让人们更加

在Vue应用中遇到Uncaught (in promise) TypeError怎么办? 在Vue应用中遇到Uncaught (in promise) TypeError怎么办? Jun 25, 2023 pm 06:39 PM

Vue是一款流行的前端框架,在开发应用时经常会遇到各种各样的错误和问题。其中,Uncaught(inpromise)TypeError是常见的一种错误类型。在本篇文章中,我们将探讨它的产生原因和解决方法。什么是Uncaught(inpromise)TypeError?Uncaught(inpromise)TypeError错误通常出现在

深入了解Promise.resolve() 深入了解Promise.resolve() Feb 18, 2024 pm 07:13 PM

Promise.resolve()详解,需要具体代码示例Promise是JavaScript中一种用于处理异步操作的机制。在实际开发中,经常需要处理一些需要按顺序执行的异步任务,而Promise.resolve()方法就是用来返回一个已经Fulfilled状态的Promise对象。Promise.resolve()是Promise类的一个静态方法,它接受一个

实例解析ES6 Promise的原理和使用 实例解析ES6 Promise的原理和使用 Aug 09, 2022 pm 03:49 PM

利用Promise对象,把普通函数改成返回Promise的形式,解决回调地狱的问题。明白Promise的成功失败调用逻辑,可以灵活的进行调整。理解核心知识,先用起来,慢慢整合吸收知识。

哪些浏览器支持Promise? 哪些浏览器支持Promise? Feb 19, 2024 pm 04:41 PM

浏览器兼容性:哪些浏览器能够支持Promise?随着Web应用程序的复杂性不断提高,开发人员们迫切需要解决JavaScript中的异步编程问题。过去,开发人员通常使用回调函数来处理异步操作,但这会导致代码复杂和难以维护。为了解决这个问题,ECMAScript6引入了Promise,它提供了一种更直观、更灵活的处理异步操作的方式。Promise是一种用于处理异

promise对象有哪些 promise对象有哪些 Nov 01, 2023 am 10:05 AM

promise对象状态有:1、pending:初始状态,既不是成功,也不是失败状态;2、fulfilled:意味着操作成功完成;3、rejected:意味着操作失败。一个Promise对象一旦完成,就会从pending状态变为fulfilled或rejected状态,且不能再改变。Promise对象在JavaScript中被广泛使用,以处理如AJAX请求、定时操作等异步操作。

PHP 函数返回 Promise 对象有什么优势? PHP 函数返回 Promise 对象有什么优势? Apr 19, 2024 pm 05:03 PM

优势:异步和非阻塞,不阻塞主线程;提高代码可读性和可维护性;内置错误处理机制。

promise什么意思 promise什么意思 Nov 02, 2023 pm 05:30 PM

Promise是一种用于处理异步操作的编程模式,它是一种代表了异步操作最终完成或失败的对象,可以看作是对异步操作的一种承诺,它可以更好地管理和组织异步代码,使得代码更加可读性高、可维护性强。Promise对象有三个状态:pending、fulfilled和rejected。Promise的核心思想是将异步操作从回调函数中分离出来,通过链式调用的方式来表达异步操作之间的依赖关系。

See all articles