JavaScript实现异步传输的原理是什么(javascript,开发技术)

时间:2024-05-03 07:13:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    JavaScript%E5%AE%9E%E7%8E%B0%E5%BC%82%E6%AD%A5%E4%BC%A0%E8%BE%93%E7%9A%84%E5%8E%9F%E7%90%86%E6%98%AF%E4%BB%80%E4%B9%88

一、浏览器

在我们的开发中,在浏览器端中的JavaScript可以实现两个比较重要的接口,这两个接口分别是定时器和ajax请求

定时器:

对于定时器,当它被执行的时候,我们的浏览器会进行执行定时计数,而且在定时事件触发之后会把事件推到我们的JavaScript事件中,只有当JavaScript主线程同步完成之后才会到时间事件进行执行,所以JavaScript的定时器并不是准时触发的。

Ajax:

那么我们的Ajax请求和我们的定时器是一样的,他们同样是通过委托浏览器来进行执行任务,在Ajax中是由于浏览器中的http请求线程之后发起服务请求,在得到请求之后从而完成事件,然后再将回调函数推入到我们的事件队列中进行等待。

二、Node JS 端

对于Node JS的异步实现和浏览器实现是有所不同的,在Node JS 中的Libuv 为我们提供了很多能力,其中包含:跨平台、线程池、事件池、异步I/O 等等。不仅如此在Libuv中还为上一层的Node.js提供了统一的API调用,这就让我们在使用的时候不需要去考虑平台之间的差距,而且还可以做到隐藏了底层的实现,对于Libuv来说它本身就是异步和时间驱动的,所以当我们将I/O操作的请求传送给Libuv之后,就会开启线程来执行我们的I/O的调用,后面在传给我们的JavaScript从而进行最后的处理。

发起I/O调用:

1、我们在使用的使用是让用户通过Javascript代码调用NodeJS核心模块,将参数和回调传入核心模块。

2、 在NodeJS中我们需要通过 核心模块将传入参数和回调封装为一个请求对象。

3、 将这个请求对象推入到I/O线程池中等待执行 J。

4、avascript发起的异步调用结束,Javascript线程继续执行后续操作 。

执行回调:

1、异步任务完成之后,会将结果存放在请求对象的result属性上,并发出操作完成通知 。

2、每次事件循环时会检查I/O线程池中是否存在已经完成的I/O操作,如果有就将请求事件加入到I/O观察者队列当中(事件队列),之后当作事件处理 。

3、处理I/O观察者事件时,会将之前封装在请求对象中的回调函数取出,并将result参数传入执行,以完成Javascript回调的目的 。

本文:JavaScript实现异步传输的原理是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:JavaScript基础语法有哪些及怎么用下一篇:

10 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18