返回顶部
首页 > 资讯 > 前端开发 > node.js >ajax是不是多线程
  • 823
分享到

ajax是不是多线程

2024-04-02 19:04:59 823人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“ajax是不是多线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ajax是不是多线程”这篇文章吧。ajax不是多线程,而是单线程的,

这篇文章主要为大家展示了“ajax是不是多线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ajax是不是多线程”这篇文章吧。

ajax不是多线程,而是单线程的,因为javascript是单线程的,而Ajax属于JavaScript范畴,因此Ajax是单线程的。之所以可以利用Ajax做到多线程,这取决于WEB服务器,服务端使用多线程处理请求。

教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

Ajax是单线程还是多线程?

首先明确一点:Ajax是单线程的,因为JavaScript是单线程的,Ajax属于JavaScript范畴,因此Ajax是单线程的。之所以我们可以利用Ajax做到多线程,这取决于Web服务器,服务端使用多线程处理请求。

然后再明确一点:浏览器是多进程的。如图,Google浏览器每打开一个tab标签页就会有一个子进程。

ajax是不是多线程

因为js运行在浏览器中,是单线程的,每个window一个JS线程,既然是单线程的,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码。

Ajax异步?

Ajax请求确实是异步的,js引擎执行异步代码而不用等待,是因有为有 消息队列事件循环,这请求是由浏览器新开一个线程请求。浏览器中很多行为是异步的,当一个异步事件发生的时候,它就进入事件队列,浏览器有一个内部大消息循环,Event Loop(事件循环),会轮询大的事件队列并处理事件,只有前面的处理完毕了,空闲了才会执行这个事件,而JavaScript引擎始终是单线程运行回调函数。

结论:

Ajax请求确实是异步的,这请求是由浏览器新开一个线程请求,事件回调的时候是放入Event loop单线程事件队列等候处理。

消息队列中放着我们注册异步任务时添加的回调函数,主线程在发起AJAX请求后,会继续执行其他代码。AJAX线程负责请求url,拿到响应后,它会把响应封装成一个JavaScript对象,然后构造一条消息:

// ajax请求
$.ajax(url, function(resp) {
    console.log('我是响应:', resp);
});
 
 
// 消息队列中的消息就长这个样子
var message = function () {
    callbackFn(response);
}
// 其中的callbackFn就是前面代码中得到成功响应时的回调函数。

主线程在执行完当前循环中的所有代码后,就会到消息队列取出这条消息并执行它,到此为止,就完成了工作线程对主线程的通知,回调函数也就得到了执行。如果一开始主线程就没有提供回调函数,AJAX线程在收到Http响应后,也就没必要通知主线程,从而也没必要往消息队列放消息。其中,异步过程的回调函数,一定不在当前这一轮事件循环中执行。

以上是“ajax是不是多线程”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: ajax是不是多线程

本文链接: https://lsjlt.com/news/88382.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ajax是不是多线程
    这篇文章主要为大家展示了“ajax是不是多线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ajax是不是多线程”这篇文章吧。ajax不是多线程,而是单线程的,...
    99+
    2024-04-02
  • swoole是不是多线程
    这篇文章主要介绍“swoole是不是多线程”,在日常操作中,相信很多人在swoole是不是多线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”swoole是不是多线程”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-29
  • mysql是不是多线程的
    这篇文章将为大家详细讲解有关mysql是不是多线程的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql是多线程的。mysql是一个单进程多线程的数据库,在innod...
    99+
    2024-04-02
  • redis是不是多线程的
    小编给大家分享一下redis是不是多线程的,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!redis是单线程,单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有...
    99+
    2024-04-02
  • javascript是不是多线程语言
    这篇文章主要介绍javascript是不是多线程语言,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! javascript不是多线程语言,而是一种单线程语言...
    99+
    2024-04-02
  • 高并发是不是多线程
    高并发不是多线程,多线程是java的特性,高并发不是JAVA的专有的东西,是一种概念,多线程是处理高并发的一种编程方法,即并发需要用多线程实现。...
    99+
    2024-04-02
  • Redis是单线程还是多线程
    Redis是单线程的,即所有的操作都是由一个线程来处理的。这是因为Redis主要使用内存来存储数据,而内存访问速度非常快,所以单线程...
    99+
    2024-04-09
    Redis
  • golang是多线程还是单线程
    golang 是一种多线程语言。它使用轻量级的协程作为并发原语,可以充分利用多核 cpu 的优势。协程由 go 调度程序管理,负责分配 cpu 时间片和协调协程执行。 Golang是多...
    99+
    2024-04-21
    golang go语言
  • ajax是不是js
    这篇文章主要介绍ajax是不是js,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! ajax不是js。js全称JavaScript,是一种编程语言;而aja...
    99+
    2024-04-02
  • node.js是不是单线程
    这篇文章主要介绍“node.js是不是单线程”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node.js是不是单线程”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • nodejs多线程还是单线程
    Node.js 多线程还是单线程?在开发领域中,Node.js 的居民们时常被问到这个问题:Node.js 多线程还是单线程? 我们来一探究竟。Node.js 是一个开放源代码、跨平台的、基于 Chrome V8 引擎建立的 JavaScr...
    99+
    2023-05-17
  • nodejs是多线程吗
    这篇文章主要介绍“nodejs是多线程吗”,在日常操作中,相信很多人在nodejs是多线程吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs是多线程吗”的疑惑有所帮...
    99+
    2024-04-02
  • golang是多线程么
    golang是多线程。Golang有一套轻量级的并发机制,称为“goroutine”,同时还提供了通信机制“channel”,可以用于线程之间的通信。要注意的是Go语言中的并发编程是基于通信(channel)和协程(goroutine)的模...
    99+
    2023-12-12
    Golang go语言
  • Node.js是不是单线程吗
    这篇文章主要为大家展示了“Node.js是不是单线程吗”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Node.js是不是单线程吗”这篇文章吧。进程在操作系统中,...
    99+
    2024-04-02
  • javascript引擎是不是单线程
    这篇文章给大家分享的是有关javascript引擎是不是单线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 JavaScript引擎是单线程的;Ja...
    99+
    2024-04-02
  • node是不是单线程运行
    这篇“node是不是单线程运行”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node是不是...
    99+
    2024-04-02
  • java是多线程的吗
    java是多线程的,使用多线程有三种方法:继承Thread类、实现Runnable接口和使用Callable和Future创建线程。继承Thread类 (推荐学习:java课程 )实现方式很简单,只需要创建一个类去继...
    99+
    2021-06-25
    java教程 java
  • 什么是Redis多线程
    这篇文章主要介绍“什么是Redis多线程”,在日常操作中,相信很多人在什么是Redis多线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Redis多线程”的疑惑有所帮...
    99+
    2024-04-02
  • redis属于单线程还是多线程
    小编给大家分享一下redis属于单线程还是多线程,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis4.0之前是单线程运行的...
    99+
    2024-04-02
  • 多线程是并发还是并行
    所谓进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。线程只能归...
    99+
    2018-07-26
    java教程 java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作