Promise对象简介
2017-08-25 13:51
375 查看
一、概述
promise是异步编程解决方案,避免了回掉深渊。
二、promise状态
pending:进行中,初始状态;
fulfiled:成功,操作已成功;
rejected:失败,操作已失败。
promise状态变化:pending到fulfiled与pending到rejected,一旦promise状态改变,其状态将会凝固不变。
三、基本用法
var promise = new Promise(
/*executor*/
function(resolve,reject){
if(/* */){resolve(value);}//fulfiled状态
else{reject(error);}//rejected状态
}
)
Promise构造函数接收一个executor函数作为参数,executor函数在Promise构造函数执行时同步执行,被传递到resolve和reject函数,分别在promise到状态由pending到fulfiled与pending到rejected时被执行。
promise实例声称以后,可以使用then方法分别指定resolved与rejected状态到回掉函数,其中第二个回掉函数是可选的。
promise.then(
function(value){
//resolved
},
function(error){
//rejected
})
四、promise属性
Promise.length:值总为1,构造器函数的参数个数;
Promise.protorype:原型对象。
Promise.prototype.then:为Promise实例添加状态改变的回掉函数,then方法的第一个参数是resolved状态的回掉函数,第二个参数(可选)是rejected状态的回掉函数。
Promise.prototype.catch:是.then(null,reject)的别名,用于指定错误发生时的回掉函数,其返回的仍然是一个promise对象。一般来说,不要在then方法中定义rejected回掉函数,总是使用catch方法。
五、promise方法
Promise.all
用于将多Promise实例包装成一个promise对象,其接收一个promise实例数组,只用当数组中的Promise实例都resolve时,其状态才会变成resolved,只要有一Promise实例变成rejected,其状态将变成rejected。
var p = Promise.all([promise1,promise2,...])
Promise.race
用于将多Promise实例包装成一个promise对象,其接收一个promise实例数组,只用当数组中的Promise实例状态改变,其状态就跟着改变。
Promise.resolve
将现有对象转变成Promise对象
Promise.reject
返回一个新的Promise对象,其状态为rejected。
六、应用
Promise实现ajax的例子
var getJSON = function(url) {
var promise = new Promise(function(resolve, reject){
promise是异步编程解决方案,避免了回掉深渊。
二、promise状态
pending:进行中,初始状态;
fulfiled:成功,操作已成功;
rejected:失败,操作已失败。
promise状态变化:pending到fulfiled与pending到rejected,一旦promise状态改变,其状态将会凝固不变。
三、基本用法
var promise = new Promise(
/*executor*/
function(resolve,reject){
if(/* */){resolve(value);}//fulfiled状态
else{reject(error);}//rejected状态
}
)
Promise构造函数接收一个executor函数作为参数,executor函数在Promise构造函数执行时同步执行,被传递到resolve和reject函数,分别在promise到状态由pending到fulfiled与pending到rejected时被执行。
promise实例声称以后,可以使用then方法分别指定resolved与rejected状态到回掉函数,其中第二个回掉函数是可选的。
promise.then(
function(value){
//resolved
},
function(error){
//rejected
})
四、promise属性
Promise.length:值总为1,构造器函数的参数个数;
Promise.protorype:原型对象。
Promise.prototype.then:为Promise实例添加状态改变的回掉函数,then方法的第一个参数是resolved状态的回掉函数,第二个参数(可选)是rejected状态的回掉函数。
Promise.prototype.catch:是.then(null,reject)的别名,用于指定错误发生时的回掉函数,其返回的仍然是一个promise对象。一般来说,不要在then方法中定义rejected回掉函数,总是使用catch方法。
五、promise方法
Promise.all
用于将多Promise实例包装成一个promise对象,其接收一个promise实例数组,只用当数组中的Promise实例都resolve时,其状态才会变成resolved,只要有一Promise实例变成rejected,其状态将变成rejected。
var p = Promise.all([promise1,promise2,...])
Promise.race
用于将多Promise实例包装成一个promise对象,其接收一个promise实例数组,只用当数组中的Promise实例状态改变,其状态就跟着改变。
Promise.resolve
将现有对象转变成Promise对象
Promise.reject
返回一个新的Promise对象,其状态为rejected。
六、应用
Promise实现ajax的例子
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); });[/code]
相关文章推荐
- 【ES6学习】— (2)异步编程Generator函数和Promise对象简介
- Promise对象
- 类Object---所有对象的基类 简介
- ES6 Promise对象的学习笔记
- c++==简介及面向对象特点(1)
- Promise对象
- Linux内核对象概念简介
- 转-NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- AO的Display对象简介二
- PHP基础之类和对象1——简介及基本概念
- jQuery系列01---jQuery简介、jQuery使用详解、DOM对象与jQuery对象的转换与区别
- Promise对象
- 实例简介PHP的一些高级面相对象编程的特性
- JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
- Angularjs promise对象解析
- Core Data 中涉及的基本对象简介(概念)
- 简介DOM对象和jQuery对象
- 使用jQuery Deferred对象实现Promise
- Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)
- Promise 对象