Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。
Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled/resolved(已成功)和rejected(已失败)。
Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。
注意:我只是new了一个对象,并没有调用它,我们传进去的函数就已经执行了,这是需要注意的一个细节。所以我们用Promise的时候一般是包在一个函数中,在需要的时候去运行这个函数。
var p = new Promise( function(resolve, reject) {
//QF为封装AJAX请求的方式
QF .get("../php/a.php", {}, function(data) {
if ( !data.error) {
resolve(data);
} else {
reject(data);
}
})
});
p. then( function(data) {
alert(1)
})
. catch( function(data) {
alert(2)
})