ES6中新增的promise对象

所谓 Promise,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API,可供进一步处理。

Promise 对象有以下两个特点。

(1)对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是「承诺」,表示其他手段无法改变。

(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。

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

Promise 也有一些缺点。首先,无法取消 Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。第三,当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

Promise 构造函数接受一个函数作为参数,该函数的两个参数分别是 resolve 方法和 reject 方法。

如果异步操作成功,则用 resolve 方法将 Promise 对象的状态,从「未完成」变为「成功」(即从 pending 变为 resolved);

如果异步操作失败,则用 reject 方法将 Promise 对象的状态,从「未完成」变为「失败」(即从 pending 变为 rejected)。

时间: 2024-11-03 22:15:02

ES6中新增的promise对象的相关文章

es6中新增的常用数值扩展

Number.integer(123) //true 是否为整形数字 //注意,参数必须是数字,字符串的数字都不行 Number.MAX_SAFE_INTEGER / Number.MIN_SAFE_INTEGER // js可处理的最大和最小的数值,也就是安全区 Number.isFinite() //用来检查一个数值是否为有限的.和integer一样,不会把字符串隐式转换成数字 Math.trunc(1.1) //只取整数, 不涉及四舍五入,类似双波浪号效果(~~1.1) Math.sign

es6中新增对象的特性和方法

1. 对象简写 //曾经假如是这样的 var name = 'xxx' var obj = { name : name, say : function(){ alert(this.name) } } //对象简写后 var obj = { name, say(){ alert(this.name) } } //简单的说就是写对象的时候把冒号以及左边的key省了,直接写变量名或者方法名,这个应用还是很广泛的. 2. 属性名表达式 //曾经定义的时候可以这样这样 var obj = { name :

JavaScript、ES6中的类和对象

面向对象可以用于描述现实世界的事物,但是事物分为具体的(特指的)事物和抽象的(泛指的)事物. 面向对象思维的特点: 1.抽取(抽象)对象共有的属性和行为组织(封装)成一个类(模板) 2.对类进行实例化,获取类和对象 3.对象--特指的 1) 对象是一个具体的事物,一个苹果.一张网页.一个数据库.一个与远程服务器的连接也是对象: 2) javascript中 对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如,字符串.数值.数组.函数等. 属性:事物的特征,在对象中用属性来表示(常用名

ES6中新增的字符串方法

String.fromCodePoint() 用于从 Unicode 码点返回对应字符 String.fromCodePoint(0x20BB7) // "??" String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' // true 上面代码中,如果String.fromCodePoint方法有多个参数,则它们会被合并成一个字符串返回. String.raw() 该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)

es6中新增的字符串函数

// starsWith(); // endWith(); // include(); // repeat(); 原文地址:https://www.cnblogs.com/wanqingcui/p/10801502.html

浅谈Javascript中Promise对象的实现

https://segmentfault.com/a/1190000000684654 What? Promise是CommonJS的规范之一,拥有resolve.reject.done.fail.then等方法,能够帮助我们控制代码的流程,避免函数的多层嵌套.如今异步在web开发中越来越重要,对于开发人员来说,这种非线性执行的编程会让开发者觉得难以掌控,而Promise可以让我们更好地掌控代码的执行流程,jQuery等流行的js库都已经实现了这个对象,年底即将发布的ES6也将原生实现Promi

ES6中的Promise

Promise作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本概念与使用方法. 1.1ES6 Promise 先拉出来遛遛 复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受.那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?函数? 别猜了,直接打印出来看看吧,console.dir(Promise),就这么简单粗暴. 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resol

通过一道笔试题浅谈javascript中的promise对象

因为前几天做了一个promise对象捕获错误的面试题目,所以这几天又重温了一下promise对象.现在借这道题来分享下一些很基础的知识点. 下面是一个面试题目,三个promise对象捕获错误的例子,返回结果有什么不同. //使用throw添加错误事件 var p = new Promise(function(resolve, reject) { resolve("ok"); throw new Error('error0'); //setTimeout(function() { thr

[转]JS - Promise使用详解2(ES6中的Promise)

原文地址:https://www.hangge.com/blog/cache/detail_1638.html 2015年6月, ES2015(即 ECMAScript 6.ES6) 正式发布.其中 Promise 被列为正式规范,成为 ES6 中最重要的特性之一. 1,then()方法 简单来讲,then 方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数. 而 Promise 的优势就在于这个链式调用.我们可以在 then 方法中继续写 Promise 对象并