[英]Is there a way to know if a `resolve` function has been called
我將resolve
函數作為參數傳遞,我必須知道它是否在某個地方被調用過。 我想知道是否有一個函數可以幫我做到這一點,而不是手動維護狀態。
const p = new Promise((resolve, reject) => {
f(resolve)
g(resolve)
}
如果在f
調用了resolve,則g
應該具有不同的行為,例如
const arr = [1,2,3]
const g = resolve => {
if(resolve has been called) {
do nothing
} else {
const el = arr.pop()
resolve(el)
}
}
我想要一個函數f(resolve) == true|false
我知道還沒有像這樣的標准函數,因為它未包含在Promise規范中。 因此,我要求一個已在瀏覽器或polyfill中實現的提案。
如果不是現在都這樣做,我將在這里留下這個問題,以防將來有一天會出現一個問題。
您可以創建一個跟蹤調用的包裝函數:
const p = new Promise((resolve, reject) => {
const resolveContext = {
didResolve: false
};
const wrappedResolve = (...args) => {
resolveContext.didResolve = true;
resolve(...args)
};
wrappedResolve.context = resolveContext;
f(wrappedResolve)
g(wrappedResolve)
}
現在您的g函數可以訪問wrappedResolve.context.didResolve
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.