Promise的优缺点:
优势:Promise 的写法是回调函数的改进,使用then方法之后,异步任务的两段执行看得更清楚了。then将原来异步函数的嵌套关系转变为链式步骤异步
缺点:Promise 的最大问题是代码冗余,原来的任务被Promise 包装了一下,无论什么操做,一眼看去都是一堆 then,原来的语义变得很不清楚。函数
Promise是一个构造函数,本身身上有all、reject、resolve这几个眼熟的方法,
原型上有then、catch等一样很眼熟的方法prototype
Promise.prototype.then=function(){对象
}
Promise.prototype.catch=function(){原型
}回调函数
new Promise()
Promise对象表明一个异步操做,有三种状态:
pending(进行中)、resolved(已完成)
pending(进行中) 和Rejected(已失败)。io
一旦状态改变,就不会再变,任什么时候候均可以获得这个结果。Promise对象的状态改变,只有两种可能:从Pending变为Resolved;从Pending变为Rejected。console
var p = new Promise(function(resolve, reject){
//作一些异步操做
setTimeout(function(){
console.log('执行完成');
resolve('随便什么数据');
}, 2000);
});function
Promise的构造函数接收一个参数,是函数,而且传入两个参数:resolve,reject,分别表示异步操做执行成功后的回调函数和异步操做执行失败后的回调函数。构造函数
function runAsync(){ var p = new Promise(function(resolve, reject){ //作一些异步操做 setTimeout(function(){ console.log('执行完成'); resolve('随便什么数据'); }, 2000); }); return p;}runAsync();