es6之Promise的详细介绍
Promise
Promise是一个对象,从它可以获取异步操作的消息;
特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending到Rejected);
缺点:一旦创建就会立即执行无法中途取消;如果没有回调函数,内部抛出的错误无法反映到外部;当处于Pending时,无法得知目前进展到哪一阶段;
一般不要在then方法里面定义Reject状态的回调函数(即then的第二个参数),而是使用catch方法;因为这种可以捕获前面then中的错误,也更接近同步写法(try/catch)
catch方法返回的还是一个 Promise 对象,因此后面还可以接着调用then方法;catch方法之中,还能再抛出错误
Promise.all方法用于将多个Promise实例,包装成一个新的Promise实例;Promise.all方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例;只有p1 p2 p3状态都变成fulfilled,p状态才会变成fulfilled;只要有一个rejected,p就变成rejected;
Promise.race也是将多个Promise实例包装成新的Promise;只要有一个对象状态变了,p状态就会跟着变,返回先改变的对象的值传给p的回调函数;
-
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
登录后复制 Promise.reject返回一个Promise对象,该实例状态为rejected;这个方法方法的参数,会原封不动地作为reject的理由,变成后续方法的参数。
-
两个附加方法
// 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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题











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

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

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

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

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

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

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