javascript - 如何避免异步事件处理程序顺序混乱
问题描述
在调用一些异步函数后,我很难找到一种方法来保证我拥有正确的数据。我有一个元素列表,每个元素都有一个异步 onclick 处理程序。我有一个滑块,当单击一个元素时会打开它并用一些数据异步填充。
const onClickElement = async () => {
// open slider
// await fetch data to display
}
在滑块关闭时,我有一些异步功能可以从滑块中删除数据。
const onSliderClose = aync () => {
// await async clear data 1
// await async clear data 2
}
如果我单击关闭滑块,然后立即单击另一个元素以重新打开滑块,则在滑块 onSliderClose 处理程序完成之前获取新数据。关闭滑块功能恢复并清除所有先前获取的数据。我正在使用 react 和 redux 进行数据存储。谢谢!
解决方案
将 await 与异步一起使用!
const onClickElement = async () => {
// open slider
// fetch data to display
await fetchData()
}
或替代
const onClickElement = async () => {
// open slider
// fetch data to display
}
onClickElement.then( () => {
//Do what you have to do here
})
推荐阅读
- python - 在 keras 中创建自定义的“不可微分”激活函数
- protobuf-net - Serializer.PrepareSerializer 和 RuntTimeTypeModel.CompileInPlace 有什么区别
- gnuplot - 如何设置彩盒的位置?
- python - 一个点在多边形内吗?方法有问题
- ssl - Nginx SSL 什么都不返回
- macos - 为什么创建新的 API 项目时出现兼容性错误?
- c# - 将失败的 IValueConverter 的 TextBox 状态绑定到 XAML 中的按钮
- azure - 复制前如何转换列?
- angular - 如何使用angular2中的primeng突出显示正在从列表中搜索的那些
- regex - ruby 正则表达式来检查一个有效的句子