有一个需求,是拿到一个kanban的数组列表,这个列表存储了顺序的请求看板名字,遍历这个数组,然后根据名字参数进行网络请求。
请求的数据加载看板,但是客户要求,加载的看板需要和数组列表的顺序一样。
但是网络请求是异步的,所以做法是,使用闭包的方式,存储请求的顺序,存key的数组。
然后把这个数组传到加载的方法上。
用slice copy数组(坑,因为filter会改变原来的数组,如果我们不希望改变,可以使用slice(0)赋值这个数组再filter),因为拿到的数组可能是乱序的,比如[2,3,5,4,1],所以我们需要先排序,然后把再去找排序后,positon的值。
也就是先用fliter,然后再用findIndex,找到位置的值后,
使用insertBefore就可以插入了。
if(position>=0){
// let firstLoad = indexArray[0]
var p = indexArray.slice(0).sort((r1,r2)=>r1-r2).findIndex(value=>value===position)
//insertBefore
// if(position <= firstLoad){
self.container.insertBefore(boardNode,self.container.children[p]); //函数insertBefore()表示在哪个节点之前添加。第一个参数为要插入的新节点,第二个参数为已有节点。
//__updateBoardsOrder()
// }else{
// self.container.insertBefore(boardNode,self.container.children[position]);
// }
}
其中position是当前item的key值