异步编程
Promise 异步操作有 3 种状态
promise 构造函数接收一个函数作为参数,并且这个函数有两个参数,这两个参数是也是两个函数,不过这两个函数由 JavaScript 引擎自动提供,不用自己部署,这两个函数通常表示为 resolve,
reject
let promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
resolve 函数的作用是: 将 Promise 对象的状态从 pending 变为 resolved,并将异步操作成功的结果,作为参数传递出去
reject 函数的作用是: 将 Promise 对象的状态从 pending 变为 rejected,并将异步操作报出的错误,作为参数传递出去
Promise 新建实例时,构造函数的函数参数会立即执行
let promise = new Promise(function(resolve, reject) { resolve(); console.log(‘new Promise‘); }); promise.then(function() { console.log(‘Resolved.‘); }); console.log(‘Hi!‘); // new Promise // Hi! // Resolved.
基本方法:
Promise.prototype.then(onResolved, onRejected): 这个方法在 Promise 实例的状态发生改变时才进行调用
then 方法可以接受两个回调函数作为参数
promise.then(function(value){ // success }, function(error){ // error });
then 方法返回的是一个新的 Promise 实例(注意,不是原来的那个 Promise 实例),因此可以采用链式写法
promise.then(function(value){ // success }, function(error){ // error }).then(function(value){ // success }, function(error){ // error });
Promise.prototype.catch(): 这个方法仅在 Promise 实例的状态从 pending 变为 rejected 时才进行调用
// 最佳写法 promise.then(function(value){ // success }).catch(function(error){ // error });
原文:http://www.cnblogs.com/minna123/p/7224636.html