[英]Is it an anti pattern that Promise with resolve and reject as property?why?
export function getDeferred () {
let resolve; let reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
promise.resolve = resolve;
promise.reject = reject;
return promise ;
};
let deferred=getDeferred();
async function fetchSomeData(){
let data=await fetch('...')
deferred.resolve(data);
}
async function someFunctionMustHaveFetchedData(){
let data = await deferred;
// do something after deferred resolved
}
我為什么要這樣做?
someFunctionMustHaveFetchData 將被調用多次,但數據只能獲取一次
它本身可能不是“反模式”,但我只會在絕對必要的情況下公開reject
和resolve
。 這不是這里的情況。 您可以只將 promise 或數據存儲在變量中:
let promise;
async function someFunctionMustHaveFetchedData(){
if (!promise) {
promise = fetch('...');
}
let data = await promise;
// do something after deferred resolved
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.