我有一個if/else
塊,看起來像這樣/ else塊:如果有回報,ajax的承諾
if (this.getSessionStorageData()) {
this.initialData(this.getSessionStorageData());
} else if (this.shouldPerformXHR) {
this.loadXHRData();
}
Prefably我想擴大這個塊,選擇創建成一個switch語句也許有點是這樣的:
let data = [];
if (this.getSessionStorageData()) {
data = this.getSessionStorageData();
} else if (this.shouldPerformXHR) {
data = this.loadXHRData();
}
return data;
但loadXHRData
是一個AJAX請求。我在這個例子中猜測,如果shouldPerformXHR
是真的,那麼在AJAX請求完成之前將會返回數據。
現在,XHR請求實際上是一個承諾,所以我可以接電話並使用then
,但我的sessionStorage數據未使用承諾。
有什麼辦法可以像我的第二個例子那樣擁有相同的數據結構,但是有了我的承諾或者這是不可能的?
我想要一個方法來簡單地返回數據與任何必要的策略(ajax,會話等)。但目前看來,我被迫從ajax請求的.then
子句中設置我的數據,這導致我在所有地方都有邏輯。
希望這是有道理的,如果不是,請去問問。
但是你不能從調用返回,所以你得d帶有承諾的eal,所以getSessionStorageData返回一個承諾並將其設置爲立即解決。 – epascarello
您正在尋找'Promise.resolve'。是的,您必須始終將該功能視爲異步。 – Bergi