七、ES6中Promise对象
创建Promise对象
// 初始化状态
let promise = new Promise(function (resolve, reject) {
/**
* resolve - 是一个函数,将Promise对象的状态改为成功
* rejecte - 是一个函数,将Promise对象的状态改为失败
*/
setTimeout(() => {
resolve("测试成功了!");
}, 200);
});
// then将promise的状态改变
promise.then(function (value) {
console.log(value); // 测试成功了!
});Promise对象原型的方法
then()方法主要作用是为
Promise对象添加状态改变时回调函数。其第一个参数resolved状态的回调函数。第二个参数是rejected状态时的回调函数。catch()方法此方法返回一个Promise对象,并且处理拒绝的情况。
let 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()方法。let 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对象整合成一个。
let 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对象先执行完,函数就返回什么。
let 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 许可协议。转载请注明来自 小康博客!
评论
TwikooDisqusjs










