考虑如下代码
whatever.onclick = async () => {
const a = await(await fetch('step-1')).text();
const b = await(await fetch('step-2')).text();
whatever.textContent = a + b;
}
事件监听器是异步的,所以如果用户在step-1
和step-2
之间再次点击的话,就会产生竞争。远程是第三方,所以没法控制。
现在有这几种可能的需求:
- 如果前一次请求尚未结束,丢弃新请求;或
- 如果前一次请求尚未结束,新请求应当和旧请求一起返回;或
- 如果前一次请求尚未结束,新请求应当排队。
请问有没有合适的轮子,还是说必须自己造?
感觉这是个很合理的需求啊,为啥loadsh没有
给async 设定一个时间范围的限制吧,在短时间内重复多次触发的click,实际只执行一次。