React中如何检测APIService实例的Promise数组是否包含指定Promise?
React中APIService的Promise队列匹配失败问题
- 开发React应用时,使用全局APIService实例处理远程数据请求,为实现组件卸载时终止fetch请求,给APIService添加了AbortController功能。计划在useEffect中获取请求返回的Promise,组件卸载时调用
APIService.abort()方法终止对应请求。 - APIService内部维护私有属性
queue: Promise<boolean>[],用于追踪处于pending状态的Promise,请求完成后会将其从队列中移除。但在abort方法中,无论使用indexOf还是===比较,都无法检测到传入的Promise存在于queue数组中,即便该Promise是通过APIService自身的get方法推入队列的。 - 奇怪的是,若将queue设为公开属性并在类外部手动推入Promise,abort方法的查找逻辑就能正常工作。尝试给队列元素添加id标识来匹配,问题仍未解决,且未发现Promise的引用在状态变更过程中发生改变。
内容的提问来源于stack exchange,提问作者Daniel Stasiak
相关产品推荐
相关产品推荐

