簡體   English   中英

將 Promise 解析並拒絕為財產是否是一種反模式?為什么?

[英]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 將被調用多次,但數據只能獲取一次

它本身可能不是“反模式”,但我只會在絕對必要的情況下公開rejectresolve 這不是這里的情況。 您可以只將 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM