七、ES6中Promise对象
创建Promise对象
1 | // 初始化状态 |
Promise对象原型的方法
then()
方法主要作用是为
Promise
对象添加状态改变时回调函数。其第一个参数resolved状态的回调函数。第二个参数是rejected状态时的回调函数。catch()
方法此方法返回一个Promise对象,并且处理拒绝的情况。
1
2
3
4
5
6
7
8
9
10
11
12
13
14let promise = new Promise(function (resolve, reject) {
setTimeout(() => {
reject("测试成功了!");
}, 200);
});
// then将promise的状态改变
promise
.then((value) => {
console.log("then() :", value);
})
.catch((value) => {
console.log("catch() :", value); // catch() : 测试成功了!
});finally()
方法返回一个Promise对象,在执行
then()
和catch()
后,都会执行finally()
方法。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17let promise = new Promise(function (resolve, reject) {
setTimeout(() => {
reject("测试成功了!");
}, 200);
});
// then将promise的状态改变
promise
.then((value) => {
console.log("then() :", value);
})
.catch((value) => {
console.log("catch() :", value); // catch() : 测试成功了!
})
.finally(() => {
console.log("finally"); // finally
});
对象方法
Promise.resolve(value)
返回一个成功的对象
Promise.reject(reject)
返回一个失败的对象
Promise.all()
将对各Promise对象整合成一个。
1
2
3
4
5
6
7
8
9
10
11
12
13
14let promise1 = new Promise((resolve, reject) => {
resolve("promise1");
});
let promise2 = new Promise((resolve, reject) => {
resolve("promise2");
});
let promise3 = new Promise((resolve, reject) => {
resolve("promise3");
});
let promise = Promise.all([promise1, promise2, promise3]);
promise.then((value) => {
console.log(value); // [ 'promise1', 'promise2', 'promise3' ]
});Promise.race()
在整合中的Promise对象中,哪个Promise对象先执行完,函数就返回什么。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16let promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("one");
}, 100);
});
let promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("two");
}, 300);
});
let promise = Promise.race([promise1, promise2]);
promise.then((value) => {
console.log(value); // one 因为第一个先执行完
});
Promise执行的流程
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline