一、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-tw/n/280777.html
微信掃一掃
支付寶掃一掃