什么是回调函数?
回调函数区别于普通函数,在于它的调用方式。只有当某个函数被作为参数,传递给另一个函数,或者传递给宿主环境,然后该函数在函数内部或者宿主环境中被调用,才被称为回调函数。
同步回调和异步回调区别?
最大区别是:同步回调函数是在执行函数内部被执行的,异步回调函数是在执行函数外部被执行的。
JavaScript 从一开始就被设计成运行在UI线程中。
什么是UI线程?
UI线程,是指运行窗口的线程,当时运行一个窗口时,无论该页面是 Windows 上的窗口系统,还是 Android 或者 iOS 上的窗口系统,它们都需要处理各种事件,诸如有触发绘制页面的事件,有鼠标点击、拖拽、放大缩小的事件,等等。
在页面线程中,当一个事件被触发时,比如用户使用鼠标点击了页面,系统需要将该事件提交给UI线程处理。
UI线程每次从消息队列中取出事件,执行事件的过程称为一个任务。流程如下:
XMLHttpRequest触发回调函数的流程: