两相知 2022-05-04 04:44:20
上一步会获取到模块的压缩包地址(resolved 字段),npm 会用此地址检查本地缓存,缓存中有就直接拿,如果没有则从仓库下载。
有一个疑问,这里检查的是本地缓存.npm
目录 还是 /node_modules
目录 ?
貌似记得在 npm 中的某个版本中,即使 .npm
目录 中存在缓存,npm 也会重新下载
两相知 2022-05-01 00:52:49
forEach是不能阻塞的,默认是请求并行发起,所以是同时输出1、4、9。
串行解决方案:
async function test() { for (let i = 0; i < list.length; i++) { let x = list[i] const res = await square(x) console.log(res) } }
当然,也可以用 for of
语法,就是帅:
async function test() { for (let x of list) { const res = await square(x) console.log(res) } }
还有一个更硬核点的,也是 axios 源码里所用到的,利用 promise 本身的链式调用来实现串行。
let promise = Promise.resolve() function test(i = 0) { if (i === list.length) return promise = promise.then(() => square(list[i])) test(i + 1) } test()
- 共 1 页
- 1
需要再补充一个@cleverboy32
第 52 题:怎么让一个 div 水平垂直居中