如果回调函数没处理完,又产生了触发该回调函数的事件,怎么处理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果回调函数没处理完,又产生了触发该回调函数的事件,怎么处理?相关的知识,希望对你有一定的参考价值。

1、首先如果是单线程编程的话,只有递归才可能产生这种情况(当然修改返回地址也可能,这种可能是炫耀编程水平用的)。这样的话看你的需要了,递归每个过程都有自己的栈,数据不会出什么问题,当然不是死递归。
2、如果是多线程编程的话,如果这种并发不是想要的,可以使用消息机制,让回调函数调用完毕发送一个message给主线程,主线程再调度其它线程。
参考技术A 一般情况下不需要额外处理,除非后一次的函数调用依赖于前一次的处理结果,这样的话应该考虑一下设计是否合理。 参考技术B 如果回调函数不是重用的,建议采用信号量保护临界资源。

uni-app防抖和节流

参考技术A 所谓防抖,就是指触发事件后,就是把触发非常频繁的事件合并成一次去执行。即在指定时间内只执行一次 回调函数 ,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算。

所谓节流,是指频繁触发事件时,只会在指定的时间段内执行事件回调,即触发事件间隔大于等于指定的时间才会执行回调函数。

具体使用:

以上是关于如果回调函数没处理完,又产生了触发该回调函数的事件,怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章

js的事件传播

Qt回调函数

请问啥叫做回调函数

从事件处理程序回调调用的函数中“this”的值?

异步回调函数

函数节流和防抖