javascript – JQuery对象承诺的目的是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – JQuery对象承诺的目的是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1273字,纯文字阅读大概需要2分钟。
内容图文
![javascript – JQuery对象承诺的目的是什么?](/upload/InfoBanner/zyjiaocheng/811/9f6e49b89e7242489f317617bc005238.jpg)
几年来,我正处理一个兼职问题,其中一些加载了jquery html函数的DOM元素在函数调用后不能立即访问(行为有点像执行函数而不等待文档就绪事件).即使.html()假设是同步的,这个SO answer(以及这个one)建议使用html函数的promise:
$('#divId').html("<h1>hello</h1>").promise().done(function(){
//Callback
});
承诺在这样的上下文中是有意义的,但是对于这个承诺有什么好处,它也将与每个jquery的对象一起返回:
$('#divId').promise().done(function(){
//Will also be called...
});
由于我在html函数的文档中找不到任何关于它的内容,我想知道这个promise的真正目的是什么,以及它是否在此上下文中正确使用.
解决方法:
这两种方法无关.人们经常提出这个问题的原因是因为有人发现他们可以使用.promise().done()来使他们的代码具有竞争条件.它的工作原理与setTimeout(fn,0)中包含相同代码的原因相同.它会将其推送到稍后运行的回调队列,可能是在浏览器执行渲染之后或者在其他异步回调完成之后.
.html是同步的,没有回调,也不需要回调.但是,浏览器的渲染器是异步的,因此在调用堆栈清除之前它不会呈现更改.使用.promise将回调推送到回调队列,从而在渲染之后运行代码,解决竞争条件或异步逻辑缺陷.
在jquery集合上使用的.promise()返回一个promise,该promise将在所有当前运行的jquery动画完成后解析.如果当前没有正在运行的动画,则promise将立即解决,并且一旦堆栈清除,回调将被推送到回调队列以进行调用.
它只不过是一个绑带.我建议不要使用它,而是修复任何异步逻辑缺陷导致它成为解决方案.
内容总结
以上是互联网集市为您收集整理的javascript – JQuery对象承诺的目的是什么?全部内容,希望文章能够帮你解决javascript – JQuery对象承诺的目的是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。