The*_*tor 6 javascript cancellation reactjs es6-promise
为了防止对未挂载的 React 组件进行幻像更新,React 会告诉您取消任何挂起的承诺组件上的(例如获取额外数据的承诺)。使用 Bluebird 承诺很容易实现这一点,它有一个.cancel()
方法可以导致.then()
和.catch()
处理程序从不响应。
但是,ES6 Promises 不支持取消。此外,ES7async
和await
仅使用原生 Promise,不支持任何插入式替换(例如 Bluebird)。这意味着,如果你希望能够取消在承诺作出反应,因为他们告诉你这样做,你必须使用.then()
和.catch()
,也有放置一个中间人在本地无极方法,比如fetch()
,以便它可以被取消。
这真的是 React 所期望的吗?
最新的 React 文档(2023 年 8 月)针对此问题提出了 2 个解决方案:
创建一个新的“忽略”变量,在效果清理期间将其设置为 true。当 Promise 返回时,根据变量忽略结果。
使用AbortController API 取消异步操作。
在React 文档的此页面上查看“挑战 4(共 4)个”的解决方案。
归档时间: |
|
查看次数: |
316 次 |
最近记录: |