最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavascriptPromise学习笔记_html/css

来源:动视网 责编:小采 时间:2020-11-27 16:26:10
文档

JavascriptPromise学习笔记_html/css

JavascriptPromise学习笔记_html/css_WEB-ITnose:1. 定义:Promise是抽象异步处理对象以及对其进行各种操作的组件,它把异步处理对象和异步处理规则采用统一的接口进行规范化。 2. ES6 Promises 标准中定义的API: a) Constructor:采用new来实例化, var promise = new Promise
推荐度:
导读JavascriptPromise学习笔记_html/css_WEB-ITnose:1. 定义:Promise是抽象异步处理对象以及对其进行各种操作的组件,它把异步处理对象和异步处理规则采用统一的接口进行规范化。 2. ES6 Promises 标准中定义的API: a) Constructor:采用new来实例化, var promise = new Promise


1. 定义:Promise是抽象异步处理对象以及对其进行各种操作的组件,它把异步处理对象和异步处理规则采用统一的接口进行规范化。

2. ES6 Promises 标准中定义的API:

a) Constructor:采用new来实例化,
var promise = new Promise(function(resolve, reject) {…});

b) Instance Method:使用then方法设置成功(resolve)和失败(reject)时的回调函数,

promise.then(onFulfilled, onRejected),

promise.catch(onRejected),其中,catch只是then的别名而已;

c) Static Method:一些其他的辅助方法,比如all(),resolve()。

3. Promise 状态。三种状态:Pending(初始化)、Fulfilled和Rejected。在then后执行的函数可以肯定地说只会被调用一次。

promise对象被 resolve 时的处理 onFulfilled

promise对象被 reject 时的处理 onRejected

图1. Promise调用的执行过程

4. Resolve方法:

a) 静态方法Promise.resolve(value)可以认为是new Promise()方法的快捷方式,是一种语法糖;Promise.reject(error)与之类似;

b) Promise.resolve方法另一个作用就是将thenable对象转换为promise对象,比如jQuery.ajax()。

5. Promise在规范上规定Promise只能使用异步调用方式 。所以,promise.then实际上是属于异步调用的。

6. Promise方法链:Promise可以将任意个方法连在一起作为一个方法链(method chain)。例如:

.then(taskA).then(taskB).catch(onRejected).then(finalTask);

方法链将方法串在一起,按照顺序严格执行。

* 注意,ECMAScript 3中catch是保留字,因此在IE8一下不能使用,所以,一般使用promise["catch"]或者then来代替之。

图2. Promise链式调用的执行过程

7. 每次调用then都会返回一个新创建的promise对象,应该尽量避免一个promise执行多个then方法,而是使用链式调用法。

8. Promise和数组:Promise.all([…])在所有promise对象都变为 FulFilled 或 Rejected 状态之后被调用。Promise对象数组中所有promise方法同时调用。

Promise.race为任意一个方法变为 FulFilled 或 Rejected 状态之后被调用,在第一个promise对象变为Fulfilled之后,并不会取消其他promise对象的执行。

9. Promise中的 then 和 catch:

a) 使用promise.then(onFulfilled, onRejected) 的话,在 onFulfilled 中发生异常的话,在 onRejected 中是捕获不到这个异常的。

b) 在 promise.then(onFulfilled).catch(onRejected) 的情况下,then 中产生的异常能在 .catch 中捕获

c) .then 和 .catch 在本质上是没有区别的,需要分场合使用。

10. Deferred拥有 Promise,Deferred和Promise并不是处于竞争的关系,而是Deferred内涵了Promise。使用Deferred,只需要先创建deferred对象,可以在任何时机对 resolve、reject 方法进行调用。
var deferred = new Deferred();

本文摘自JavaScript Promise迷你书(中文版)

文档

JavascriptPromise学习笔记_html/css

JavascriptPromise学习笔记_html/css_WEB-ITnose:1. 定义:Promise是抽象异步处理对象以及对其进行各种操作的组件,它把异步处理对象和异步处理规则采用统一的接口进行规范化。 2. ES6 Promises 标准中定义的API: a) Constructor:采用new来实例化, var promise = new Promise
推荐度:
标签: html javascript ht
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top