最近项目里遇到一个问题:js 中for循环里面嵌套了异步函数,需求是每次执行循环中的异步函数时必须是在上次循环的
异步函数执行完之后;
解决方案针对不同情景如下:
关键点:Vue 中的 watch 对象的使用
情景一:每次异步循环中,需要根据异步数据来进行用户的交互然后进行下次的异步循环;(如:三次的异步循环,每次
循环的时候需要把得到的数据让用户选择,选择完之后进行下次的异步循环)
方法: 在 watch 里面监听每次循环的索引,当每次异步函数执行完之后改变索引 (如:+1),这个时候在执行
异步函数即可;
情景二:每次的异步循环中,不需要进行用户的交互只需要按照每次异步循环的顺序,确定得到异步数据的顺序;
方法:使用for循环,在 watch 对象里面声明一个对应循环执行次数的数组,每次根据执行的索引来填充
相应的位置数据(如:第二次异步循环先结束的话就在数组 arr[1]的位置填充异步数据,第一次异步执行完后
就在arr[0]的位置填充数据);就这样保证了异步循环数的有序性;
总结:对于新上手的框架需要多看多学,如果不懂watch的话,问题很难解决