后端交互数据的机制
上一篇已经实现了编辑器,现在就要打通前后端。做到前端编辑的结果自动传输到后端保存,这样就能确保了在线编辑“不掉链”。
说到前后端数据的同步,就要提“防抖和节流”的概念。我看这篇文章介绍的挺好。
防抖(Debounce):原理是维护一个定时器,将很多个相同的操作合并成一个。规定在delay后触发函数,如果在此之前触发函数,则取消之前的计时重新计时,只有最后一次操作能被触发。
节流(Throttle):原理是判断是否达到一定的时间来触发事件。某个时间段内只能触发一次函数。
区别:防抖只会在最后一次事件后执行触发函数,节流不管事件多么的频繁,都会保证在规定时间段内触发事件函数。
关于防抖,之前在全文搜索的场景下用过。用户会在短时间内快速的修改输入的文本,通过防抖可以防止过于敏感的捕捉到用户误输入的文本,从而加大不必要的搜索负荷。
**而节流则是:当持续触发事件时,保证一定时间段内只调用一次事件处理函数。**这就很适合代码同步的场景,开发者持续编辑,会持续触发change事件;但是只要保证几秒与服务器进行一次同步就足够了。
对应的核心函数
var throttle = function (func, delay) {
var prev = Date.now()
return function () {
var context = this;
var args = arguments;
var now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);