ES6学习之promise对象
来源:互联网 发布:java中注解的作用 编辑:程序博客网 时间:2024/05/19 19:41
ES6-Promise
[TOC]
本文用来记录一下学习ES6的promise对象,方便用的时候直接找到。
-promise含义
- promise基本用法
- promise基本用法实例
- promise API
promise含义
ES6原生提供了promise对象,该对象就是一容器,内部包含有未来某个时间结束的动作。
promise基本用法
ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。
如下实例:
var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); }});
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。resolve表示promise的状态的成功,reject表示promise的状态的失败。
promise实例生成之后可以调用then方法,传入promise对象的两个回调函数,其中第二个是非必须的。
如下:
promise.then(function(value) { // success}, function(error) { // failure});
promise基本用法实例
promise基本用法实例 封装:
var getJSON = function (url) { var promise = new Promise(function (resolve, reject) { var client = new XMLHttpRequest(); client.open("GET", url); client.onreadystatechange = handler; client.responseType = "json"; client.setRequestHeader("Accept", "application/json"); client.send(); function handler() { if (this.readyState !== 4) { return; } if (this.status === 200) { resolve(this.response); } else { reject(new Error(this.statusText)); } }; }); return promise;};getJSON("/posts.json").then(function (json) { console.log('Contents: ' + json);}, function (error) { console.error('出错了', error);});
promise API
promise当然有自己的api,简单介绍一下个人常用的API:
1. Promise.prototype.then() //之前已经介绍,不再详解
2. Promise.prototype.catch() //该方法可用来接收reject参数,同时也可以用来捕获Promise中的error,故推荐用catch来写。
:如下:
getJSON("/posts.json").then(function (json) { console.log('Contents: ' + json);}).catch(function (error) { console.error('出错了', error);});
- Promise.all() //该方法可用于进行同步操作,将多个Promise对象包装成一个Promise对象,所有Promise对象全部resolve才出发resolve,有一个reject,则reject,可以想象为&&操作符的逻辑。
如下:
// 生成一个Promise对象的数组 var promises = [2, 3, 5, 7, 11, 13].map(function (id) { return getJSON('/post/' + id + ".json"); }); Promise.all(promises).then(function (posts) { // ... }).catch(function(reason){ // ... });
- done()
处于整个Promise链的最后,用来捕获错误,可像then一样来使用。
asyncFunc()
.then(f1)
.catch(r1)
.then(f2)
.done(); - finally()
类似Java的try…catch…finally,无论如何最后都会执行的,与done的区别在于可传入普通函数。
学自: http://es6.ruanyifeng.com/#docs/promise
阅读全文
0 0
- ES6学习之promise对象
- ES6之Promise对象
- ES6 Promise对象学习总结
- ES6 Promise对象学习笔记
- es6学习笔记之Promise
- 学习笔记:ES6之Promise
- ES6 Promise对象的学习笔记
- ES6学习13章:Promise对象
- ES6之Promise学习之路
- ES6 学习之promise 基本用法
- es6 promise对象
- ES6 Promise 对象
- ES6 Promise对象
- ES6 Promise对象学习心得
- ES6中的promise对象
- ES6(六) promise对象
- 浅谈ES6 Promise对象
- ES6 Promise 对象理解
- 让listview显示几条数目,高度固定死
- 使用pandas优化Spark内存消耗(节省90%)
- PAT甲级1003---迷宫问题(DFS或Dijkstra)
- HashMap循环遍历方式及其性能对比
- DataTable fnRowCallback 使用
- ES6学习之promise对象
- HDU 3826 Squarefree number (素数)
- Java开发之Maven的基本配置及个人理解
- Unity Attribute的使用总结
- php -- 魔术常量 简单介绍
- 播放短促提示音的最佳办法
- 内存泄漏缘由以及解决方案
- java.nio.Buffer flip()方法
- JavaWeb笔记(3)