简单优雅的JavaScript代码片段(三):合并请求,成批发出

2023-06-05
阅读 6 分钟
1.4k
简单优雅的JavaScript代码片段文章系列:简单优雅的JavaScript代码片段(一):异步控制简单优雅的JavaScript代码片段(二):流控和重试简单优雅的JavaScript代码片段(三):合并请求,成批发出场景说明后端提供的接口具备批量查询能力(比如,同时查询10个资源的详情信息),但是调用者每次只需要请求一个资源的详情...

手写一个Parser - 代码简单而功能强大的Pratt Parsing

2022-02-24
阅读 8 分钟
4.2k
在编译的流程中,一个很重要的步骤是语法分析(又称解析,Parsing)。解析器(Parser)负责将Token流转化为抽象语法树(AST)。这篇文章介绍一种Parser的实现算法:Pratt Parsing,又称Top Down Operator Precedence Parsing,并用TypeScript来实现它。

【代码鉴赏】简单优雅的JavaScript代码片段(二):流控和重试

2021-11-06
阅读 6 分钟
3.5k
后端为了保证系统稳定运行,往往会对调用频率进行限制(比如每人每秒不得超过10次)。为了避免造成资源浪费或者遭受系统惩罚,前端也需要主动限制自己调用API的频率。

【代码鉴赏】简单优雅的JavaScript代码片段(一):异步控制

2020-06-28
阅读 2 分钟
4.7k
Promise.race不满足需求,因为如果有一个Promise率先reject,结果Promise也会立即reject;Promise.all也不满足需求,因为它会等待所有Promise,并且要求所有Promise都成功resolve。

React hooks,组合与抽象,状态管理

2020-03-18
阅读 6 分钟
4.1k
用户可以定义一个状态仓储来容纳被共享的状态。状态仓储可以是一个全局对象,或者是一系列依附于组件树的对象。一般都会形成一个树状的数据结构,同构于应用的功能树。

【Typescript技巧】如何从“参数类型”推导出合适的“返回类型”

2019-09-30
阅读 2 分钟
6.5k
map是一个用来做数组mapping的高阶函数,先接收mapping function(将【输入数组的项】映射为【输出数组的项】),然后接收输入数组,返回输出数组。当mapping function没有传入时,mapping function默认为一个不做任何转化的函数(即x=>x)。

Typescript工具类型 - 整理汇总

2019-09-30
阅读 6 分钟
6.6k
Typescript工具类型已经内置在es5类型声明中,无需定义即可使用。不需要一次记住所有工具,只需留下印象,将来需要时再来查阅即可。文章目录已经组织成易于查阅的形式。函数工具ConstructorParameters {代码...} 输入构造函数的类型,输出构造函数的参数的类型。例子: {代码...} InstanceType {代码...} 输入构造函数的...

在React项目中优雅地使用Typescript

2019-09-29
阅读 5 分钟
23.5k
「优雅」的含义: 减少编写冗余的类型定义、类型标注,充分利用ts的自动类型推断,以及外部提供的类型声明。 类型安全:提供足够的类型信息来避免运行时错误,让错误暴露在开发期。这些类型信息同时能够提供代码补全、跳转到定义等功能。 组件定义 函数组件 {代码...} FC是FunctionComponent的缩写。 IProps无需声明chil...

ts/js归并排序实现(稳定排序)

2018-04-19
阅读 3 分钟
4.8k
稳定排序是指,如果原数组中有多个元素是“相等的”,那么这些元素在排序后数组的相对顺序应该保持不变。比如:我们对{name:string, age:number}[]数组用age进行排序,有很多人是25岁,那么在排序后的数组中,这些25岁的人应该按照它们【在原数组中出现的顺序】来排列。

[Angular, TypeScript, 路由算法] 模拟IP层路由协议,实现LS算法、洪泛算法、DV算法、路由毒化

2018-01-07
阅读 5 分钟
6.2k
链路状态协议(Link-state routing protocol)和距离向量路由协议(Distance-vector routing protocol)是分组交换(Packet switching)网络中最主要的两种路由协议。本项目的模拟路由器实现了LS路由算法、LS广播洪泛、DV路由算法,以及防止DV路由环路和无穷计数问题的策略。此外还实现了完整的前后端以便研究者通过UI界...