timedatectl set-timezone Asia/Shanghai # 服务器时区设置 linux for Debian nginx mysql redis...
timedatectl set-timezone Asia/Shanghai # 服务器时区设置 linux for Debian nginx mysql redis...
CodeGuide 前端代码规范 JavaScript 使用 2 个空格缩进。eslint: indent[https://eslint.org/docs/rules/ind...
GIT 规范 合并规范 为适应多个feature同时并行交错开发,做到每个 feature 独立干净、合并的代码不被意外覆盖,这里有几个良好的代码合并习惯(规范)供大家参考,...
@5d9861e7a727
let count = 0;
const taskQueue = [];
/**
* @param uid uid
* @param max 最多并发请求数量
*/
const requestUserProfile = (uid = '1', max = 2) => {
const pullTask = () => {
if (taskQueue.length === 0) {
return;
}
if (count === max) {
return;
}
count++;
const { resolve, uid } = taskQueue.shift();
resolve(runTask(uid));
};
const runTask = (id) => {
const promise = requestProfile(id);
promise.then(() => {
count--;
pullTask();
});
return promise;
};
return new Promise((resolve) => {
taskQueue.push({ resolve, uid });
if (count < max) {
count++;
const { resolve, uid } = taskQueue.shift();
resolve(runTask(uid));
}
});
};
笔试题:调用接口并发请求控制优化 requestUserProfile 并发请求 requestUserProfile 是个通用用户信息接口,通过传入uid,拿用户昵称在一个群聊里有10多个用户,点击群...
为什么需要加密? HTTP 有以下安全性问题: 使用明文进行通信,内容可能会被窃听; 不验证通信方的身份,通信方的身份有可能遭遇伪装; 无法证明报文的完整性,报文有可能遭篡改...
小程序虚拟滑动序组件 Virtual Swiper 在 Swiper 组件上层 封装 Virtual Swiper,原理通 Swiper virtual slide[http...
仿发朋友圈,图片拖拽排序功能,小程序拖拽排序组件 效果演示 地址:https://github.com/yijinc/fishui[https://github.com/yi...
滑动过快,或页面列表元素高度还没渲染出来,可能导致 scroll-view 的 scrollToLower 不触发 特别是在部分安卓手机上,scroll-view 滚动速度可...
1. 先用以下命令查看当前的限制 launchctl limit 会看到如下的结果,也就是各项资源的限制 第一列为项的名称,第二列为软件限制,第三列为硬件限制 2. 修改to...
认识 BASH 这个shell 通过 man 查看 command 的使用说明书(manual pages),通常从 /usr/share/man 读取 环境变量 $PATH...
完全理解 Promise 基本实现 网上有很多 Promise 实现方式,看了都不是特别理解。这里以一种更简单的形式一步一步去理解/实现它。这里仅涉及 Promise 构造函...
跨源资源共享 CORS 跨源资源共享(Cross-Origin Resource Sharing)是一种基于 HTTP 头的机制。出于安全性,浏览器限制脚本内发起的跨域请求,...
```ts
let count = 0;
const memo = {};
/**
* @param uid uid
* @param max 最多并发请求数量
*/
const requestUserProfile = async (uid = '1', max = 2) => {
// 这里调用requestProfile 进行优化
let timer;
const loopRequestProfile = (resolve: any) => {
timer && cancelAnimationFrame(timer);
if (memo[uid]) {
return resolve(memo[uid])
}
if (max > count) {
count += 1;
requestProfile(uid).then((data) => {
count -= 1;
memo[uid] = data;
resolve(data);
});
} else {
// 循坏调用 loopRequestProfile 直到 count < max
timer = requestAnimationFrame(() => {
loopRequestProfile(resolve);
});
}
};
return new Promise(loopRequestProfile);
}
```
笔试题:调用接口并发请求控制优化 requestUserProfile 并发请求 requestUserProfile 是个通用用户信息接口,通过传入uid,拿用户昵称在一个群聊里有10多个用户,点击群...
优化 requestUserProfile 并发请求 requestUserProfile 是个通用用户信息接口,通过传入uid,拿用户昵称在一个群聊里有10多个用户,点击群...
在下读书少😂
img onload 不触发,img onload 不执行在做多图大图页面的时候,经常需要先loading,等待image.onload 才放开loading,但是img.onload在图片从缓存/内存直接读取的时候,部分浏览器如s...
最简单的SVG图标库,只支持color 和 size 两个属性直接添加 svg文件,生成react 、vue、vue3、svg 对应组件 github项目地址[https:/...
在做多图大图页面的时候,经常需要先loading,等待image.onload 才放开loading,但是img.onload在图片从缓存/内存直接读取的时候,部分浏览器如s...
ES6日常语法:let、const、解构复制、箭头函数、字符串模版、块级、Map、Set、Proxy Array日常方法:Array.prototype.map、reduce...