一、Promise的三種狀態是什麼
Promise有三種狀態:Pending,Fulfilled和Rejected。當一個Promise實例被創建時,它的初始狀態為Pending。Promise實例的狀態會在異步操作完成後從Pending狀態轉變為Fulfilled或Rejected狀態。Promise狀態的轉變是不可逆的,一旦狀態被轉變,它就不會再次改變。
二、Promise的三種用法
Promise的三種用法:Promise.resolve(), Promise.reject()和Promise.all()。
Promise.resolve()可以將一個普通的變量或者是另一個Promise實例轉變為一個Fulfilled狀態的Promise實例;Promise.reject()可以將一個異常或者錯誤信息轉變為一個Rejected狀態的Promise實例;Promise.all()可以將多個Promise實例一起處理,只有等到所有的Promise實例都成功執行後才會進入到Fulfilled狀態。
三、Promise的所有形式
Promise有多種形式:ES6原生Promise,jQuery Ajax返回的Promise實例,以及一些基於Promise的庫等等。
下面是基於ES6原生Promise的一些具體形式的代碼示例:
// Promise實例的創建 let promise = new Promise((resolve, reject) => { setTimeout(() => { let randomNum = Math.random(); if (randomNum > 0.5) { resolve(randomNum); } else { reject(randomNum); } }, 1000); }); // Promise實例的基本使用 promise.then((value) => { console.log("Fulfilled: " + value); }).catch((reason) => { console.log("Rejected: " + reason); }); // Promise實例的鏈式調用 promise.then((value) => { console.log("Fulfilled: " + value); return value * 2; }).then((value) => { console.log("2 times of the fulfilled value: " + value); }).catch((reason) => { console.log("Rejected: " + reason); }); // Promise實例的異步請求 let promisedFetch = (url) => { return new Promise((resolve, reject) => { fetch(url).then((response) => { if (response.ok) { resolve(response.json()); } else { reject(response.status); } }).catch((error) => { reject(error); }); }); };
四、Promises
Promises是指所有符合Promise/A+規範的Promise實例,它們都具有相同的行為和屬性。Promise/A+規範定義了Promise實例的幾種行為,包括Promise實例的狀態,狀態的轉變方式,以及如何使用Promise實例。
五、Promise簡單實現
以下是一個簡單的Promise實現:
class Promise { constructor(executor) { this.status = "pending"; this.value = null; this.reason = null; let resolve = (value) => { if (this.status === "pending") { this.status = "fulfilled"; this.value = value; } }; let reject = (reason) => { if (this.status === "pending") { this.status = "rejected"; this.reason = reason; } }; try { executor(resolve, reject); } catch (error) { reject(error); } } then(onFulfilled, onRejected) { if (this.status === "fulfilled") { onFulfilled(this.value); } else if (this.status === "rejected") { onRejected(this.reason); } } catch(onRejected) { if (this.status === "rejected") { onRejected(this.reason); } } }
六、Promise有幾種狀態
Promise有三種狀態:Pending,Fulfilled和Rejected。初始狀態是Pending,表示Promise實例的異步操作還沒有完成。當異步操作成功完成時,狀態轉變為Fulfilled;當異步操作失敗時,狀態轉變為Rejected。
七、Promise三種狀態
Promise的三種狀態分別是Pending,Fulfilled和Rejected。
八、Promise的狀態有哪些
Promise有三種狀態:Pending,Fulfilled和Rejected。
九、Promise三種狀態轉換
Promise的狀態是由異步操作的結果決定的。當異步操作成功完成時,狀態轉變為Fulfilled;當異步操作失敗時,狀態轉變為Rejected。
十、Promise三種狀態怎麼修改
Promise的狀態是不可逆的,一旦狀態被轉變,它就不會再次改變。Promise的狀態只能在異步操作完成後由Pending狀態轉變為Fulfilled或Rejected狀態,而狀態的轉變是由Promise實例的resolve或reject方法決定的。
以下是一個狀態轉變的示例:
let promise = new Promise((resolve, reject) => { setTimeout(() => { let randomNum = Math.random(); if (randomNum > 0.5) { resolve(randomNum); } else { reject(randomNum); } }, 1000); }); promise.then((value) => { console.log("Fulfilled: " + value); }).catch((reason) => { console.log("Rejected: " + reason); });
在這個示例中,當異步操作執行成功後,Promise實例的狀態會由Pending狀態轉變為Fulfilled狀態;當異步操作失敗後,Promise實例的狀態會由Pending狀態轉變為Rejected狀態。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/280777.html