创建一个 Promise:
const myPromise = new Promise((resolve, reject) => {
// 异步操作,如读取文件、网络请求等
// 异步操作成功时,调用 resolve,并传递结果
// resolve("Operation succeeded");
// 异步操作失败时,调用 reject,并传递错误信息
// reject(new Error("Operation failed"));
});
处理 Promise 结果:
myPromise
.then((result) => {
console.log("Success:", result);
})
.catch((error) => {
console.error("Error:", error);
})
.finally(() => {
console.log("Finally, do something regardless of success or failure.");
});
- .then() 方法用于处理 Promise 成功状态,接收一个回调函数。
- .catch() 方法用于处理 Promise 失败状态,接收一个回调函数。
- .finally() 方法用于在 Promise settled 后执行一些操作,不论成功还是失败。
Promise 链:
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Data fetched");
}, 2000);
});
}
fetchData()
.then((data) => {
console.log(data);
return "Processed data";
})
.then((processedData) => {
console.log(processedData);
})
.catch((error) => {
console.error("Error:", error);
});
在 Promise 中,可以返回一个新的 Promise,从而创建 Promise 链,依次处理异步操作。
Promise.all() 和 Promise.race():
- Promise.all() 接收一个包含多个 Promise 的数组,返回一个新的 Promise,只有当所有 Promise 都成功时,它才成功;如果任何一个 Promise 失败,它就失败。
const promise1 = Promise.resolve("Promise 1 resolved");
const promise2 = Promise.resolve("Promise 2 resolved");
Promise.all([promise1, promise2])
.then((results) => {
console.log("All promises resolved:", results);
})
.catch((error) => {
console.error("At least one promise rejected:", error);
});
- Promise.race() 接收一个包含多个 Promise 的数组,返回一个新的 Promise,只有当其中任何一个 Promise 完成时,它就完成(无论是成功还是失败)。
const promise1 = new Promise((resolve) => setTimeout(() => resolve("Promise 1 resolved"), 1000));
const promise2 = new Promise((resolve) => setTimeout(() => resolve("Promise 2 resolved"), 2000));
Promise.race([promise1, promise2])
.then((result) => {
console.log("First promise resolved:", result);
})
.catch((error) => {
console.error("First promise rejected:", error);
});
Promise 是现代 JavaScript 中广泛使用的异步编程工具,它提供了更优雅的处理异步操作的方式,避免了回调地狱(Callback Hell)的问题。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12810/JavaScript