JQuery 对象承诺的目的是什么?

2023-12-09

几年来,我一直在处理一个兼职问题,其中一些 DOM 元素用 jquery 加载html函数调用后无法立即访问该函数(该行为有点像在不等待文档就绪事件的情况下执行函数)。虽然.html()假设是同步的,这所以答案(还有这个one)建议使用承诺html功能:

$('#divId').html("<h1>hello</h1>").promise().done(function(){
    //Callback
});

在这种情况下,promise 是有意义的,但这个 Promise 令我感兴趣的是,它也会随每个 jquery 的对象一起返回:

$('#divId').promise().done(function(){
    //Will also be called...
});

由于我在文档中找不到任何有关它的信息html函数,我想知道这个承诺的真正目的是什么,以及它在这种情况下是否正确使用。


这两种方法不相关。人们经常建议这样做的原因是因为有人发现他们可以使用.promise().done()使他们的具有竞争条件的代码能够工作。它的工作原理相同,将相同的代码包装在setTimeout(fn, 0)会让它发挥作用;它将其推送到稍后运行的回调队列,可能是在浏览器执行渲染之后或在其他异步回调完成之后。

.html是同步的,没有回调,也不需要回调。但是,浏览器的渲染器是异步的,因此在调用堆栈清除之前它不会渲染更改。使用 .promise 将回调推送到回调队列,从而在渲染后运行代码,从而解决竞争条件或异步逻辑缺陷。

.promise()用于 jquery 集合返回一个承诺,一旦所有当前运行的 jquery 动画完成,该承诺将得到解决。如果当前没有正在运行的动画,则 Promise 将立即解析,并且回调将被推送到回调队列,以便在堆栈清空后调用。

只不过是创可贴而已。我建议不要使用它,而是修复导致它成为解决方案的任何异步逻辑缺陷。

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

JQuery 对象承诺的目的是什么? 的相关文章

  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • 如何使 CSS 样式覆盖 JavaScript 应用的样式

    我动态创建一个 HTML 表 并应用一些样式 var tbl document createElement table tbl id CrewMemberTable document getElementById CrewMemberPan
  • 在网站的一次导航中仅显示一次弹出窗口

    我有一个使用 Laravel 创建的网站 我希望用户第一次访问我的网站时能够看到弹出窗口 我的意思是第一次 用户访问我网站上的任何页面 这是第一次 访问网站上的一些链接页面 现在 这些页面访问不是第一次 在同一选项卡中打开 facebook
  • Bootstrap 的跨浏览器数字微调器/步进器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个与 Twitter Bootstrap 2 3 集成的数字微调器 使用 HTML5input type number
  • jQuery中如何选择具有相同属性值的元素?

    假设我有这样的结构 div div div div div div div div div div div div div div 我想隐藏除第一个之外具有相同属性的所有 div 所以我会得到 div div div div div div
  • 在 Photoshop 中使用 javascript 修改文本项的内容

    我知道如何使用这样的代码在 Photoshop 中设置文本项的内容 var al doc activeLayer if al kind LayerKind TEXT get the textItem var ti al textItem c
  • 如何检查浏览器中消失的元素?

    How can I inspect an element which disappears when my mouse moves away 我不知道它的 ID 类别或其他任何信息 但想检查它 我尝试过的解决方案 在控制台内运行 jQuer
  • 在单页应用程序上重用 Google Maps API 实例

    假设我有一个单页应用程序 Angular JS 应用程序 并且我在元素 id 上绘制一个 Google 地图实例googleMap var mapInstance new google maps Map document getElemen
  • 避免滚轮被嵌入的 youtube / flash 视频劫持

    我正在对主页中嵌入 YouTube 视频的网站进行一些改进 我自己没有添加此代码 但它看起来像
  • React:设置 State 或设置 Prop 而无需重新渲染

    Problem 目前 我有一个LoginForm具有 成功 处理函数的组件handleOnSuccess 然后将其链接到父组件onTokenUpdate由 令牌更新 处理函数定义的属性handleUpdateToken 问题是setStat
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • 仅在页面加载时执行 Javascript,而不是回发 (SharePoint)

    我正在尝试在 SharePoint 网站上的自定义页面上加载页面时执行一些 JavaScript 它使用当前用户填充人员选择器 问题是代码也在回发时执行 这是我不希望的 因为它会重置人员选择器的任何更改 我尝试过使用if IsPostBac
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • 当CSS文件存在时,无法在服务器上找到它们[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当运行本地服务器时 这一切都运行良好 我有 header html 其中包含以下代码 在 public html 目录 与 header h
  • 如何关闭 HTML 输入表单字段建议?

    我所说的建议是指当您开始输入时会出现下拉菜单 并且它的建议基于您之前输入的内容 例如 当我在标题字段中输入 a 时 它会给我大量的建议 这非常烦人 如何关闭此功能 你想要的是禁用 HTMLautocomplete属性 在这里设置 autoc
  • 嵌套对象的 setState

    我有一个嵌套对象作为状态 并且在组件中有一个表单 我正在考虑每次用户在表单中输入某些内容时更新状态 并且为了避免为每个输入创建许多函数 我正在考虑使用 switch 创建单个函数 使用 switch 创建单一函数是个好主意吗 如何更新对象的
  • <输入类型=按钮> 与 <按钮> [重复]

    这个问题在这里已经有答案了 我有点困惑 这些有什么区别呢 请不要引用非常旧的帖子 我注意到在 html 和样式表中访问某些样式是不同的内联样式
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b
  • localStorage 获取 NULL?

    我不知道为什么 因为我之前已经这样做过并且工作正常 我认为这可能是因为浏览器问题 错误 localStorage setItem foo bar alert localStorage getItem foo 我使用的是 Firefox 3

随机推荐

  • 如何在p5.js中识别圆弧内的光标? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我正在制作一个饼图 希望当光标移动到我的分段上时突出显示 然后在用户单击分段时展开 我看过很多关于如何让圆形或方形识别光标在其空间内的教程 但我无法理解任何可以根据输入值改变大小的弧线
  • 如何用Java写入ssh的stdin?

    在命令行上一切工作正常 但是当我将我想要的内容翻译成 Java 时 接收进程永远不会在标准输入上获取任何内容 这是我所拥有的 private void deployWarFile File warFile String instanceId
  • AppleScript:如何获取最顶层终端的当前目录

    我想获取最顶层终端选项卡 窗口的当前目录 通过 AppleScript 或其他方式 这并不重要 我怎样才能做到这一点 另一个解决方案 get foregroundterminal curdir fast scpt tell applicat
  • AWS lambda NodeJS运行时:io:在封闭管道上读/写

    我正在尝试执行来自一个的几个异步请求lambda功能 第一次通话resolveEndpoints 成功 第二个失败 2017 11 03 17 13 27 Function oauth callbackHandler timed out a
  • Unity为非泛型接口注册泛型类型

    我的场景 对我来说 看起来非常简单 但我找不到解决方案 我有这样的场景 public class Class
  • 强制 Matlab 输出到命令行

    我正在从 Windows 命令提示符运行 MATLAB 脚本 C Program Files MATLAB R2014B bin matlab nodisplay nosplash nodesktop wait r test m test
  • 在 Material UI 中,如何覆盖选择器选择的组件样式?

    在 Material UI 中 延长之间的距离MuiInputLabel and MuiInput 我必须重写 marginTop 的label MuiInput formControl 然而 createMuiTheme的 overrid
  • C++资源管理的shared_ptr与unique_ptr

    我一直在考虑使用unique ptr vs shared ptr vs own solution 我对后者不以为然 因为我几乎肯定会弄错 但我对两者都有问题unique ptr and shared ptr因为两者都没有准确地捕捉到我想要的
  • 访问另一个 DLL 中的类?

    有没有办法导出和使用另一个 dll 中的类 我有 2 个 dll 我正在尝试访问它们之间的类 想知道这是否可能 有多种方法可以实现这一目标 包括但不限于以下几种 使用运行时包而不是 DLL 然后您可以使用另一个模块中的任何类型 变量等 请注
  • 如何在没有 PerformanceCounter 的情况下获取可用内存和 CPU 使用情况?

    我的 Windows XP 不提供类别处理器或内存 我无法带它来显示它们 我不允许编辑注册表或更改系统文件 有没有办法在不使用 PerformanceCounter 的情况下获取实际的 CPU 使用率和可用内存 我在用着 NET 3 5 a
  • 使用 jQuery,在元素上设置 Draggable 可防止单击可拖动元素时触发模糊

    使用 jQuery 当您在文本框上设置模糊事件并将另一个元素设置为可拖动时 当您单击可拖动元素时 模糊事件不会在 FireFox 中触发 IE 稍微好一点 你得到了模糊事件 但你没有得到可拖动元素上的点击事件 如果您没有在draggable
  • 如何使用python连接到远程Windows机器来执行命令?

    我是 Python 新手 我正在尝试制作一个连接到远程 Windows 计算机并在那里执行命令并测试端口连接的脚本 这是我正在编写的代码 但它不起作用 基本上 我想要它返回本地机器数据 而不是远程机器数据 import wmi import
  • Keras 替换输入层

    我拥有的代码 我无法更改 使用 Resnetmy input tensor作为输入张量 model1 keras applications resnet50 ResNet50 input tensor my input tensor wei
  • KARATE:lowerCaseResponseHeaders 设置为 true 将redirect_uri 中的参数值也设置为小写

    我想用karate configure lowerCaseResponseHeaders true 用于测试环境之一 但问题是它在redirect uri中放入了小写的状态值 该值在responseHeaders locationPOST
  • 是否有一种更简单(更轻便)的方法可以使用 JavaFX 8 将文本置于“区域”中心?

    所以 首先 我已经实现了我想要的 那就是在 区域 的中心显示一定量的文本 截图 右上角 现在 我遇到的问题是如何实现这一点 这是整个选项卡的 FXML 摘录
  • Android SQLite 表未创建

    我正在尝试创建一个统计表 但由于某种原因 直到我调用它才创建StatisticsAdapter insertEntry 首次 之后 我可以删除该代码 重新加载新版本 然后一切正常 由于这在现实生活中行不通 我想知道如何创建一个空表 目前有一
  • 添加 API 应用程序时出现 Azure 逻辑应用程序错误

    我正在使用逻辑应用程序 API 应用程序进行 POC 以从本地 SQL 获取记录 我在 API 应用程序中创建了 SQL 连接器 还创建了逻辑应用程序 但是当尝试在逻辑应用程序设计器中添加 SQL Connector API 应用程序时 它
  • 更新SqlAlchemy多对多关联表中的值

    根据下表 如何更新用户所在的组 我觉得我必须遗漏一些明显的东西 但到目前为止我还没有找到任何东西来说明如何做到这一点 group permission table Table group permission metadata Column
  • 在 WPF 中呈现日志视图的快速方法是什么?

    我正在编写一个需要类似日志的视图 类似于 IM 客户端在对话中显示消息的方式 的应用程序 并且每秒可能有许多更新 速度在这里是一个问题 由于大量传入事件而导致应用程序锁定是一个可能的问题 我需要选择和基本文本格式 因此手动渲染可能会变得相当
  • JQuery 对象承诺的目的是什么?

    几年来 我一直在处理一个兼职问题 其中一些 DOM 元素用 jquery 加载html函数调用后无法立即访问该函数 该行为有点像在不等待文档就绪事件的情况下执行函数 虽然 html 假设是同步的 这所以答案 还有这个one 建议使用承诺ht