温叶博客

温叶博客

如何用绝对定位实现瀑布流

前言瀑布流是一种布局方式,实现瀑布流有很多种方法,例如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方法传递给任务本身...

Trie树/字典树

介绍Tire树又称字典树/前缀树,具有如下特点根节点不包含字符 除根节点外每个节点只包含一个字符树的每一个路径都是一个字符串每个节点的子节点包含的字符都不相同用途利用字符串的公共前缀来降低查找的时间,常用于搜索系统文本词频统计实现type TrieMap = { [key: string]: any; } & { isEnd?: boolean }; class Trie { ...