最近項目里遇到一個問題:js 中for循環里面嵌套了異步函數,需求是每次執行循環中的異步函數時必須是在上次循環的
異步函數執行完之后;
解決方案針對不同情景如下:
關鍵點:Vue 中的 watch 對象的使用
情景一:每次異步循環中,需要根據異步數據來進行用戶的交互然后進行下次的異步循環;(如:三次的異步循環,每次
循環的時候需要把得到的數據讓用戶選擇,選擇完之后進行下次的異步循環)
方法: 在 watch 里面監聽每次循環的索引,當每次異步函數執行完之后改變索引 (如:+1),這個時候在執行
異步函數即可;
情景二:每次的異步循環中,不需要進行用戶的交互只需要按照每次異步循環的順序,確定得到異步數據的順序;
方法:使用for循環,在 watch 對象里面聲明一個對應循環執行次數的數組,每次根據執行的索引來填充
相應的位置數據(如:第二次異步循環先結束的話就在數組 arr[1]的位置填充異步數據,第一次異步執行完后
就在arr[0]的位置填充數據);就這樣保證了異步循環數的有序性;
總結:對於新上手的框架需要多看多學,如果不懂watch的話,問題很難解決