手机网站模板 php,xampp 做网站,叶榭做网站,游戏界面设计网站Promise 是 JavaScript 中处理异步操作的一种强大机制。它提供了一种更清晰、更可控的方式来处理异步代码#xff0c;避免了回调地狱#xff08;callback hell#xff09;和复杂的错误处理。
基本概念 状态#xff1a; Pending#xff1a;初始状态#xff0c;既不是成功…Promise 是 JavaScript 中处理异步操作的一种强大机制。它提供了一种更清晰、更可控的方式来处理异步代码避免了回调地狱callback hell和复杂的错误处理。
基本概念 状态 Pending初始状态既不是成功也不是失败。Fulfilled操作成功完成。Rejected操作失败。 方法 then处理 fulfilled 状态。catch处理 rejected 状态。finally无论成功还是失败都会执行。
创建 Promise
你可以使用 new Promise 构造函数来创建一个 Promise 对象
const myPromise new Promise((resolve, reject) {// 异步操作setTimeout(() {const success Math.random() 0.5;if (success) {resolve(Operation succeeded);} else {reject(new Error(Operation failed));}}, 1000);
});处理 Promise
你可以使用 .then 和 .catch 方法来处理 Promise 的结果
myPromise.then(result {console.log(Success:, result);}).catch(error {console.error(Error:, error.message);});链式调用
Promise 支持链式调用可以依次处理多个异步操作
myPromise.then(result {console.log(First success:, result);return Second operation;}).then(secondResult {console.log(Second success:, secondResult);}).catch(error {console.error(Error:, error.message);});使用 async/await
async/await 是处理 Promise 的语法糖使异步代码看起来像同步代码
async function handleMyPromise() {try {const result await myPromise;console.log(Success:, result);} catch (error) {console.error(Error:, error.message);}
}handleMyPromise();常见的 Promise 方法
Promise.all等待所有 Promise 完成。Promise.race等待第一个 Promise 完成。Promise.resolve立即解析的 Promise。Promise.reject立即拒绝的 Promise。
示例
// 使用 Promise.all
const promise1 Promise.resolve(First);
const promise2 new Promise(resolve setTimeout(() resolve(Second), 1000));
const promise3 Promise.reject(new Error(Third));Promise.all([promise1, promise2, promise3]).then(values {console.log(All promises resolved:, values);}).catch(error {console.error(One of the promises was rejected:, error.message);});// 使用 Promise.race
Promise.race([promise1, promise2, promise3]).then(value {console.log(First resolved promise:, value);}).catch(error {console.error(First rejected promise:, error.message);});