react hooks useEffect 取消 promise
2024-09-01 08:51:42
react hooks useEffect 取消 promise
cancel promise
https://github.com/facebook/react/issues/15006#issuecomment-543059930
https://react.docschina.org/docs/hooks-effect.html#需要清除的-effect
https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/
清除的 effect & 取消订阅 & 取消 promise
bug
OK
const { adcode, regions = [] } = regionData;
const [regionName, setRegionName] = useState('全国');
const [tableData, setTableData] = useState(regions);
useEffect(() => {
let isSubscribed = true;
// getRegionName(adcode).then(setRegionName);
getRegionName(adcode).then(() => {
if(isSubscribed) {
return setRegionName;
}}
);
// 添加name字段
const promises = [];
regions.forEach(item => {
promises.push(
getRegionName(item.code)
.then(name => {item.name = name;})
// eslint-disable-next-line no-console
.catch(() => console.log('获取%s地名失败', item.code)),
);
});
// 后端传来部分区划代码是错误的,找不到对应地名,暂时先剔除
Promise
.all(promises)
.then(() => {
if(isSubscribed) {
return setTableData(regions.filter(({ name }) => !!name));
}
});
return () => isSubscribed = false;
}, [adcode, regionData, regions]);
https://juliangaramendy.dev/use-promise-subscription/
https://segmentfault.com/a/1190000018652589#articleHeader7
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
最新文章
- 学习Redis你必须了解的数据结构——HashMap实现
- FacadePattern(门面模式)
- fir.im Weekly - iOS 保持界面流畅的技巧
- Jquery+Ajax下拉框级联查询
- BZOJ 1014: [JSOI2008]火星人prefix
- 用c语言写的简单计算器
- TeamCity配置笔记
- Struts2 标签分类
- openjudge-回文串判断【递归】
- java.math.BigDecimal类
- arduino电子琴(2015-11-04)
- Web项目生成详解
- Django缓存和内置信号
- LVM备份(1)-创建LVM逻辑卷
- Django之Form验证
- canvas学习之柱状图
- osg内置shader变量
- FabricExpress.net supply high quality quilting fabric
- 2017-2018-2 20165330 实验四《Android程序设计》实验报告
- HDU 4370 - 0 or 1 (SPFA+思维)