Promise是JavaScript中的一种异步编程解决方案,用于解决回调函数嵌套过多、代码可读性差等问题。
Promise对象表示一个异步操作的最终完成或失败,可以在操作完成后获取其结果。Promise对象有三种状态:Pending(进行中)、Fulfilled(已成功)和Rejected(已失败)。当Promise对象状态变为Fulfilled或Rejected时,称为Promise对象已经“settled”。
Promise对象有两个重要的方法:then()和catch()。then()方法用于指定Promise对象的状态变为Fulfilled时的回调函数,catch()方法用于指定Promise对象的状态变为Rejected时的回调函数。此外,Promise对象还可以使用Promise.all()和Promise.race()等静态方法来处理多个Promise对象的并发操作。
Promise对象的使用可以使代码更加清晰、简洁,使异步操作更加易于管理和维护。但是需要注意的是,Promise对象也有一些缺点,例如无法取消Promise,一旦创建就无法中途取消;Promise对象的状态一旦改变就不会再变,无法重新执行。
创建一个Promise函数并使用它
const fun = new Promise((resolve, reject) => {
if (1 + 1 == 2) {
resolve(true)
} else {
reject(false)
}
})
fun().then(res => {
console.log(res); // true
}).catch(err => {
console.log(err); // false
}).finally(result => {
console.log(result); // true
})
Promise.all()的用法
const a = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1)
}, 1000)
})
const b = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2)
}, 2000)
})
Promise.all([a, b]).then(res => {
console.log(res); // [1,2]
})