Promise 是 JavaScript 中用于异步编程的核心对象,它代表一个异步操作的最终完成(或失败)及其结果值。
const promise = new Promise((resolve, reject) => {
// 异步操作
if (/* 操作成功 */) {
resolve(value); // 成功时调用
} else {
reject(error); // 失败时调用
}
});
then()
promise.then(
value => { /* 成功处理 */ },
error => { /* 失败处理 */ }
);
catch()
.then(null, rejectionHandler)
promise.catch(error => {
console.error('Error:', error);
});
finally()
promise.finally(() => {
// 清理工作
});
Promise.resolve()
Promise.resolve('success');
// 等同于
new Promise(resolve => resolve('success'));
Promise.reject()
Promise.reject(new Error('failure'));
// 等同于
new Promise((resolve, reject) => reject(new Error('failure')));
Promise.all()
Promise.all([promise1, promise2, promise3])
.then(values => {
console.log(values); // [result1, result2, result3]
})
.catch(error => {
console.error(error); // 任一失败
});
Promise.allSettled()
Promise.allSettled([promise1, promise2])
.then(results => {
results.forEach(result => {
if (result.status === 'fulfilled') {
console.log('成功:', result.value);
} else {
console.log('失败:', result.reason);
}
});
});
Promise.race()
Promise.race([promise1, promise2])
.then(value => {
console.log('第一个完成的值:', value);
})
.catch(error => {
console.error('第一个错误:', error);
});
Promise.any()
Promise.any([promise1, promise2])
.then(value => {
console.log('第一个成功的值:', value);
})
.catch(errors => {
console.error('所有Promise都失败了:', errors);
});
doSomething()
.then(result => doSomethingElse(result))
.then(newResult => doThirdThing(newResult))
.then(finalResult => {
console.log('最终结果:', finalResult);
})
.catch(failureCallback);
Promise 是现代 JavaScript 异步编程的基础,也是 async/await 语法的基础。