如何用绝对定位实现瀑布流
前言瀑布流是一种布局方式,实现瀑布流有很多种方法,例如flex,grid布局,但或多或少有这样那样的问题。所以这里介绍的是最传统也是兼容性最好的方法,绝对定位布局。实现思路首先我们来看看瀑布流长啥样首先基于瀑布流的特点,我们很容易就能定义出这几个变量data() {
return {
containerWidth: 1230, // 容器的长度
colCount: 4, ...
如何实现错误重试
前言在我们实际写业务过程中,可能会遇到一种需求,比如某个接口因为网络啥的原因不稳定 会报错,这时候我们就需要一种错误重试机制,比如失败我们就重试5次,5次还不行就算真的失败了,那这个功能具体需要怎么实现呢?实现接口本身是个promise,我们需要做的就是拦截promise的报错,在报错中加入重试机制。但是为了自定义的需求 我们可以将重试的控制权转移给调用者,以下是重试的主体代码。let re...
扁平化数组
扁平化数组就是将一个多层的数组拍扁,比如[1, [2, [3, [4, 5]]], 6]拍成[1, 2, 3, 4, 5, 6]。递归写法这个没啥难度,就是定义一个结果数组,然后循环原数组,如果元素是数组则递归。function _flat(nestNums: Array<number[] | number>, flatNums: number[] = []) {
for (...
带并发限制的异步调度器
题目分析这道题的特点就是限制了同时执行的并发数目,如果一个任务完成了就取剩下的任务继续执行。我们就可以很容易的想到,定义一个队列,将一时间执行不了的任务先放到任务队列中存着呗,等之前任务执行完再取一个执行,以此类推直至队列执行完。需要注意到的难点是add方法是会返回一个promise的,但是任务啥时候执行到是不确定的,因此这里实现方法就是将返回promise的resolve方法传递给任务本身...