我使用以下类来路由我的所有API请求
class PromiseBroker {
#promises = {};
#overlayEle = document.getElementById('loading-overlay');
constructor(){
}
get promises(){
return this.#promises;
}
setPromise(key, value){
this.promises[key] = value;
this.#overlayEle.classList.remove('d-none');
Promise.allSettled(Object.values(this.promises)).then(results => {
this.#overlayEle.classList.add('d-none')
});
}
}
这个类的目的是在所有API请求完成后取消加载覆盖.我不知道会提前提出多少要求.我面临的问题是,随着promise 的增加,它将被过早地驳回.以下是我所指的:
- 添加了Promise A-添加了加载覆盖
- Promise A解决-取消加载覆盖
- 已添加Promise B-已添加加载覆盖
- 添加了Promise C
- Promise B解决-取消加载覆盖
- Promise C解决-这是我希望取消覆盖的时候
只有当所有promise (包括自allSettled
呼叫以来增加的promise )都得到解决时,我才会放弃.我认为,问题在于,在等待和解promise 的同时,国家也在发生变化.我不知道是否有办法取消或改写allSettled
,只使用最近的呼叫.