網站首頁 編程語言 正文
問題發生的場景:頁面渲染時,會加載一個n行的列表,列表每一行對應一組數據,一組數據由一個請求獲得。我們需要將請求獲取到的數據按照一定順序顯示到頁面上
下面先看一下數據大致的請求與存儲方式:
dataSource = [obj1, obj2, ...];
getData = (dataSource) => {
let selectArr = [];
let { title } = this.props;
_.map(dataSource, async (item, index) => {
// 請求數據
await getBasicPlans(title, item.id).then(data => {
// 將數據按照請求時的順序保存進數組(optionsArr是一個數組,里面保存著option中的一條條數據)
selectArr.splice(index, 0, data.optionsArr);
this.setState({ selectArr });
})
})
}
可以看到,我們將數據存儲進數組時,使用了遍歷時的index,并且還有await進行同步化的處理。按理來說,請求完了第一條數據才會請求請求第二條數據,這樣一來,splice中的index就是從0→1→2...依次增大,那么selectArr中存儲的數據就是有序的
但結果確是selectArr中存儲的數據是無序的
我們在.then中打印index來看一下:
可以看到,并沒有按照我們預想的那樣按照順序將index打印出來
- 也就是說map種使用的await并沒有生效,為什么呢?
- 看到很多博主說for...of使用了迭代器,可以解決這一問題,但是組內有個前輩僅僅將上面的map換成了最基本的for循環就實現了,為什么最基本的for循環就能解決這一問題呢?
原文鏈接:https://blog.csdn.net/qq_44647809/article/details/122638385
相關推薦
- 2023-01-05 C++?Boost?Utility超詳細講解_C 語言
- 2022-03-14 flutter The argument type ‘String?‘ can‘t be assig
- 2022-12-24 Kotlin?Channel處理多個數據組合的流_Android
- 2023-04-20 el-table多選+搜索
- 2022-11-14 UNIX環境高級編程筆記
- 2023-02-06 shell腳本實戰之部署nginx腳本實例_nginx
- 2022-09-26 nodemon安裝在開發環境(非全局安裝)報錯解決【兩種方式】
- 2022-06-12 淺談Android?Dialog窗口機制_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支