由回调函数说开来

作者: Spring_Bear | 来源:发表于2017-10-17 10:03 被阅读163次

这几天涉及一些前端网络请求的问题,听得最多的就是ajax发送请求,

回调函数

回调函数的概念我在文章中有提到,是作为另一个函数的参数被调用的函数称之为回调函数。
之所以称之为回调,是因为我们正常调用系统内部函数时是正调,那么反过来系统调用自定义的函数就称之为回调。典型的像Ajax上传文件中的success函数。

事件轮询

事件轮询机制字面理解的话就是对事件进行循环执行,到底什么意思呢?看一张图:



事件轮询(event loop)就是对事件队列循环读取的一种机制。
为什么需要这种机制,应该说它是一种有效地实现单线程异步的方式。
我们结合js的异步过程,来看下轮询机制的用法:

(1) 所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2) 主线程之外,还存在一个"任务队列"(task queue)。只要ajax,onclick等异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3) 一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4) 主线程不断重复上面的第三步。

回调与异步

回调常常与异步联系在一起,因为是系统调用自己定义的函数,结合轮询机制可以实现js的异步,就如上所述步骤。值得注意的是浏览器中很多行为是异步(Asynchronized)的,例如:鼠标点击事件、窗口大小拖拉事件、定时器触发事件、 XMLHttpRequest完成回调等,这并不代表js本身是异步的,而是浏览器的操作。

参考:
为什么javascript是单线程的却能让AJAX异步调用?
JS中的异步以及事件轮询机制
什么是 Event Loop?

相关文章

  • 由回调函数说开来

    这几天涉及一些前端网络请求的问题,听得最多的就是ajax发送请求, 回调函数 回调函数的概念我在文章中有提到,是作...

  • 回调模式

    概念 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数 角色 回调抽象接口 回调者 利弊 利 ...

  • JQuery知识点补充

    text()、html() 以及 val(),拥有回调函数。回调函数由两个参数:被选元素列表中当前元素的下标,以及...

  • JSONP的 javaScript 和 JQuery 用法

    JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • # Android 中的回调函数揭秘

    在学习Android的过程中,经常会遇到"回调函数"这个词,那么甚么是回调函数呢? 简单地说,回调函数就是通过其指...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • javascript回调函数

    javascript回调函数很玄幻。 jquery 中大量使用了回调函数。直到现在才看懂 普通回调函数 匿名回调函...

网友评论

    本文标题:由回调函数说开来

    本文链接:https://www.haomeiwen.com/subject/tgjgyxtx.html