網(wǎng)站首頁 編程語言 正文
問題發(fā)生的場景:頁面渲染時,會加載一個n行的列表,列表每一行對應(yīng)一組數(shù)據(jù),一組數(shù)據(jù)由一個請求獲得。我們需要將請求獲取到的數(shù)據(jù)按照一定順序顯示到頁面上
下面先看一下數(shù)據(jù)大致的請求與存儲方式:
dataSource = [obj1, obj2, ...];
getData = (dataSource) => {
let selectArr = [];
let { title } = this.props;
_.map(dataSource, async (item, index) => {
// 請求數(shù)據(jù)
await getBasicPlans(title, item.id).then(data => {
// 將數(shù)據(jù)按照請求時的順序保存進(jìn)數(shù)組(optionsArr是一個數(shù)組,里面保存著option中的一條條數(shù)據(jù))
selectArr.splice(index, 0, data.optionsArr);
this.setState({ selectArr });
})
})
}
可以看到,我們將數(shù)據(jù)存儲進(jìn)數(shù)組時,使用了遍歷時的index,并且還有await進(jìn)行同步化的處理。按理來說,請求完了第一條數(shù)據(jù)才會請求請求第二條數(shù)據(jù),這樣一來,splice中的index就是從0→1→2...依次增大,那么selectArr中存儲的數(shù)據(jù)就是有序的
但結(jié)果確是selectArr中存儲的數(shù)據(jù)是無序的
我們在.then中打印index來看一下:
可以看到,并沒有按照我們預(yù)想的那樣按照順序?qū)ndex打印出來
- 也就是說map種使用的await并沒有生效,為什么呢?
- 看到很多博主說for...of使用了迭代器,可以解決這一問題,但是組內(nèi)有個前輩僅僅將上面的map換成了最基本的for循環(huán)就實現(xiàn)了,為什么最基本的for循環(huán)就能解決這一問題呢?
原文鏈接:https://blog.csdn.net/qq_44647809/article/details/122638385
相關(guān)推薦
- 2022-08-17 React自定義hook的方法_React
- 2022-03-29 Python數(shù)據(jù)類型-序列sequence_python
- 2023-03-02 Flutter有狀態(tài)組件StatefulWidget生命周期詳解_Android
- 2023-01-17 C#實現(xiàn)自定義ListBox背景的示例詳解_C#教程
- 2023-03-11 Tensorflow的DataSet的使用詳解_python
- 2022-11-30 Python利用裝飾器click處理解析命令行參數(shù)_python
- 2021-11-21 ASP.NET?Core應(yīng)用JWT進(jìn)行用戶認(rèn)證及Token的刷新方案_實用技巧
- 2022-05-13 ffmpeg+pyqt5簡單實現(xiàn)一個抽幀可視化小工具
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支