Javascript 进程是否有多个执行线程?

2024-05-29

背景

我正在创建一个“地址簿”类型的应用程序。有很多条目需要加载。一个想法是首先加载一小部分条目,让用户开始,然后将剩余条目排队,优先考虑用户单击的条目。 (例如,如果他们单击以 X 开头的名称,请先加载这些名称,然后再处理队列的其余部分)。这个想法是在初始化时加载初始数据集(通过 AJAX),然后在后台加载其余数据(进行大量 AJAX 调用)。

我的许多问题

从概念上讲,我知道如何做到这一点,但我不清楚 Javascript 引擎的限制:

  1. 执行顺序是否依赖于浏览器?我尝试做的一件事是将条目集(A、B、C 等)排队,然后同时发出一大堆请求。这不是很成功。我接到了大部分电话,但没有按任何特定顺序。我需要所有的回电。 :)

  2. 我如何调试这个/跟踪这个?我不确定 Javascript 如何处理响应;对于单个响应来说很容易,但我不确定如何处理来自服务器的多个相对较大的响应。

  3. 给定页面是否有单个执行线程?也就是说,如果 Javascript 从服务器获得响应但仍在执行代码,那么事务是否会阻塞,直到当前执行的代码完成为止?

  4. 是否建议在请求之间设置延迟?这也可能会导致问题,因为请求的加载和发送(截至目前)处于初始化阶段;如果我必须在请求之间睡眠(),那么我不妨强制用户等待所有数据加载,而不尝试进行这种逐渐加载。

我环顾四周,但没有发现任何有用的东西。我很好奇 JS 如何处理这些异步请求/响应。

到目前为止我做了什么

为了让人们更好地了解正在发生的事情,以下是我按照执行顺序所做的事情。有 5 个硬编码搜索类别:名字、姓氏、类别、地区、州。每个类别都有范围。例如,名字类别可能有 26 个范围,每个范围对应字母表中的每个字母:“Aardvark - Azariah”就是一个范围的示例。每个范围都有该范围内每个用户的用户信息。我有两个表:范围表和用户表。

  1. 初始化范围表和范围数据源对象。将范围表对象映射到特定事件。
  2. AJAX 调用以获取每个类别的所有范围。我们等待这一点然后再继续。
  3. 与范围表类似地初始化用户表。
  4. 构建一个加载队列以获取每个范围的所有用户。加载队列如下所示:[lastNames['S']、states['CA']、regions['northwest']、lastNames['A'] 等]
  5. 预选择名字类别、“A”名字范围以及该范围中的第零个用户。 (这只是我为给用户一个起点而做出的任意选择)
  6. AJAX 调用以获取firstName['A'] 的所有用户。从加载队列中删除firstNames['A']范围。
  7. 填充适当的 UI 元素
  8. 循环我们的加载队列、使范围出列并构建数据的 AJAX 请求。

还有很多其他细节......但这就是它的基本要点。

发生的情况是,我的范围表填充得很好......但是浏览器只是阻塞(spod),然后我的用户表中填充了各种疯狂的数据。显然,后者是我的一个 UI 错误,所以我必须对此进行调查,但我不清楚这是最好的方法。

在第 7 步,我不确定请求之间是否应该有延迟。理想情况下,如果用户选择特定范围,例如状态['AK'],我们将首先处理该请求,从我们的加载队列中dq'ing该范围。但是,如果我在前端发送所有请求,那么我们将永远没有机会为我们选择的范围提供适当的优先级。


JavaScript 是完全单线程的。

如果您进行多个 AJAX 调用,您将在服务器发送后立即收到每个响应;顺序取决于服务器发送每个回复所需的时间。

如果服务器回复时您的代码仍在运行,则只有在您的代码完成后才会处理回复。

您应该尝试在单个请求中加载所有数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 进程是否有多个执行线程? 的相关文章

  • 在画布中心写入 (0,0)-HTML5

    I m currently developing a drawing app which allows the user to click and drag to determine the size of the shape and al
  • 在 JavaScript 中使用 Array.map 删除元素

    我想使用以下方法过滤一系列项目map 功能 这是一个代码片段 var filteredItems items map function item if some condition return item 问题是过滤掉的项目仍然使用数组中的
  • 可以跨 iframe 共享 javascript 导入吗?

    我有一个 Web 应用程序 其中有多个 iframe 它们都需要导入相同的 javascript 库 例如 jquery 有没有办法只加载一次并以某种方式在所有 iframe 之间共享该数据 我不想让我的页面加载缓慢 因为它为每个 ifra
  • 克隆表行

    我怎样才能使用javascript 我假设 来克隆一个表格行 就像下图所示的那样 您可以将现场活动连接到所有按钮 例如 如果您给他们一类克隆 则以下内容将起作用 input clone live click function put jqu
  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • 如何在react中返回点击元素的属性?

    我想知道是否有一种简单的方法来获取单击元素的属性React js function App return
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • 将值传递给映射函数 - CouchDB

    我想知道是否可以将值传递给 couchDB 设计文档中的映射函数 例如 在下面的代码中 可以传递用户输入的值并使用该值来运行地图函数 也许我可以传递用户UserName当他们登录时 然后根据地图功能显示视图 function doc if
  • 通过标记或JS强制下载

    假设我在 CDN 来自 Rackspace 的云文件 上有一个文件 以及一个包含该文件链接的静态 html 页面 有什么方法可以强制下载此文件 以防止它在浏览器中打开 例如 mp3 我们可以让我们的服务器读取该文件并将相应的标头设置为 he
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • LightningChart JS - LineSeries / Progressive X 的损坏

    我在使用 LightningChart 时遇到了一个有趣的问题 它似乎会破坏或以其他方式减少我的数据 具体取决于它与图表的 DateOrigin 的距离 我的数据是每秒 1000 个样本 我试图一次显示 1 2 周的数据 我正在使用 Cha
  • 解析字符串:提取单词和短语 [JavaScript]

    我需要在以空格分隔的术语列表中支持确切的短语 用引号引起来 因此 用空格字符分割相应的字符串已经不够了 Example input foo bar lorem ipsum baz output foo bar lorem ipsum baz
  • 从组件刷新/重新加载 ember 路由

    我有一个组件 它实际上是一个模式对话框 当我完成该对话框并按 确定 按钮时 我想留在打开该对话框的停留页面上 这并不难 但问题是该对话框更改了数据 我通过 REST 调用获取数据 因此我需要刷新已经所在的路线以反映数据更改 因为我是从组件中
  • 汇总异常以保留模块

    我使用一个名为的汇总插件rollup plugin lit css转变 css文件转换成 javascript 模块 该插件非常简单 它本质上只是附加export default到文件 我的汇总配置使用preserveModules and
  • Javascript - HTML Canvas 上的 Gecko 边框半径自适应(CSS border-radius)

    我试图弄清楚如何将 border radius css 属性的行为重现到 HTML 画布中 所以我已经在 J avascript 中做了一些事情 以便使用特定的半径 对于每个角 来计算给定形状的正确边界 如果需要的话 这是上一个问题 Gec
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • 即使切换它时,hasClass 也始终返回 false

    我有以下代码
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio
  • ASP.NET MVC3 Ajax.ActionLink - 条件确认对话框

    我有一个 Ajax ActionLink 仅当满足某些条件 用户有未保存的更改 时 我才希望显示一个确认对话框 我创建了一个 JavaScript 函数 它根据需要显示确认对话框 并根据响应返回 true 或 false 我将其绑定到 Ac

随机推荐

  • 高维数据的ELKI Kmeans聚类任务失败错误

    我有 60000 个文档 我在其中处理过gensim得到一个60000 300的矩阵 我将其导出为csv文件 当我导入这个时ELKI环境和运行Kmeans聚类 我遇到以下错误 Task failed de lmu ifi dbs elki
  • 带分页的 Rails 随机活动记录

    我需要查找特定资源的所有记录并以随机顺序显示它们 但具有一致的分页 如果开始分页 您将不会看到相同的记录两次 每次用户访问页面时 显示顺序都应该是随机的 我在用将分页 http wiki github com mislav will pag
  • 从设备获取联系人列表时出现问题

    这段代码有什么问题 NSMutableArray contactArray NSMutableArray alloc init ABAddressBookRef addressBook ABAddressBookCreate CFArray
  • 如何更新 YamlDotNet 中的属性值?

    我正在尝试加载现有的 yaml 文件并更新其一些属性 然而 我正在努力not覆盖其他属性 My yaml A a1 value1 a2 value2 所需的 yaml A a1 value1 a2 modified 我目前有以下代码 但我只
  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • Python3中如何使用StringIO?

    我使用的是 Python 3 2 1 无法导入StringIO模块 我用io StringIO它可以工作 但我不能使用它numpy s genfromtxt 像这样 x 1 3 n 4 5 8 numpy genfromtxt io Str
  • 在bigquery中比较两个表的有效方法

    我有兴趣比较两个表是否包含相同的数据 我可以这样做 standardSQL SELECT key1 key2 FROM SELECT table1 key1 table1 key2 table1 column1 table2 column1
  • R 中带有边缘箱线图的直方图

    如何使直方图中的 X 轴与边缘箱线图匹配 data lt rnorm 1000 nf lt layout mat matrix c 1 2 2 1 byrow TRUE height c 1 3 layout show nf par mar
  • OWIN / Katana 未处理的异常全局处理程序?

    在 Katana OWIN 实现中实现全局异常捕获器处理程序的正确方法是什么 在作为 Azure 云服务 辅助角色 运行的自托管 OWIN Katana 实现中 我将此代码放置在中间件中 throw new Exception pooo 然
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符
  • 分割单个 SpatialPolygons 对象的多边形部分

    在 R 中 我有一个SpatialPolygons包含数百个多边形的对象 即多个多边形 我想分割这个SpatialPolygons对象放入列表中Polygons 即孔应保持连接到父多边形 知道如何做到这一点吗 EDITED 使用以下提供的示
  • 使用 PyMongo 将 MongoDB find() 返回序列化为非匿名 JSON 数组

    我的 Python 代码查询 MongoDB 并返回an array以下对象 u attribute u value u id ObjectId 534776c66e5987041f6154bd 我想要实现的是返回以下 JSON mycol
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • 与常规 SQL 查询不同,为什么“linq to sql”查询以 FROM 关键字开头?

    为什么 linq to sql 查询以FROM与常规 SQL 查询不同的关键字 LINQ 模仿Logical Query processing在 SQL 中你有 8 SELECT 9 DISTINCT 11 TOP 1 FROM 2 ON
  • 我可以限制 firestore 数据库中的某些字段仅由 firebase 管理员获取吗?

    我在 firestore 中有一个用户集合 它存储了一些我不想向用户透露的用户信息 例如会话 ID 所以我的问题是 是否可以只允许 Firebase 管理员获取文档的某些字段 而如果任何用户经过身份验证 则可以获取其余字段 firebase
  • Terraform:如何安装多个版本的提供程序插件? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 azurerm 提供程序通过 Terraform 0 12 部署 Azure 资源 我有 AKS 模块 它可以在 azurerm 版本 2 5 0 上正常工作 但在 2 9 0 版本上无法正常工作
  • IEnumerable 流式传输

    我想做一些大致相当于下面的代码示例的事情 我想生成并提供数据流 而不必在任何时候将整个数据集都存储在内存中 看来我需要一些接受 Stream 的实现IEnumerable
  • Symfony2 实体字段在选项为空时显示所有条目

    我的 Symfony2 项目中有一个实体类型表单字段 builder this gt createFormBuilder projects this gt getProjects builder gt add project entity
  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个