promise
Promise是什么?
Promise用来表示延迟操作也就是异步操作的结果
Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息
Promise主要用于异步计算
Promise 创建 Promise 创建
var promise=new Promise(function(resolve,reject){
setTimeout(function(){
console.log('执行完成Promise');
resolve('要返回的数据可以任何数据例如接口返回数据');
}, 2000);
})
Promose的三个状态:
pending 是 初始状态
fulfilled 是 操作成功的状态
rejected 是 操作失败的状态
.then()
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)
2、.then()返回一个新的Promise实例,所以它可以链式调用
(1)如果then方法中回调函数返回一个值那么then返回的Promise将会成为Resolved状态,并且将返回的值
作为Resolved状态的回调函数的参数值。
var p = new Promise(function (resolve, reject) {
resolve('fun');
});
p.then(function () {
return 1; // 返回一个值
}).then(function (value) {
console.log(value);
}); // 1
3、当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行
4、状态响应函数可以返回新的promise,或其他值,不返回值也可以我们可以认为它返回了一个null;
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
6、如果返回其他任何值,则会立即执行下一级.then()
.then的情况
1、因为.then()返回的还是Promise实例
2、会等里面的then()执行完,再执行外面的
promise的基本语法
var a = 2;
var p = new Promise(function (resolve, reject) {
if (a == 1) {
resolve(1)
} else {
reject(2)
}
});
p.then(
function (res1) {
console.log(res1) // 成功resolve promise 的第一个then中的第一个函数来处理
},
//可以写俩个函数
// function(res){
// console.log(res2);//可以捕获reject 2
// }
).catch(function (error) {//必须写
// 捕获错误
if (error) {
console.log(error)
}
}).
then(function (er) {//第二个then是第一个then结束后的回调函数
// 第一个then 处理结束后的回调函数
console.log('处理完成')
})
// 获得reject 的结果 使用catch then 也是可以捕获的,但是会报错