理解$.prope的工作原理类似于transitionEnd
understanding how $.promise works similar to transitionEnd
我只是在jQuery.promise()
的文档页面上闲逛,发现了以下代码:
$("button").on("click", function () {
$("p").append("Started...");
$("div").each(function (i) {
$(this).fadeIn().fadeOut(1000 * (i + 1));
});
$("div").promise().done(function () {
$("p").append(" Finished! ");
});
});
小提琴在这里
现在我明白了jQuery中的$.dedefer有助于异步编程,我也明白了$.done和$.fail是$promise对象的一部分。
我在这里读了一篇有趣的文章。关于$.dedefer如何用于监视css-3转换,有几个很好的例子。
然而,在我提供的fiddle示例中,我不明白$.prouise是如何获得转换完成这一事实的。promise是如何获取fadeout((完成的?
下面的代码是如何真正工作的?
$("div").promise().done(function () {
$("p").append(" Finished! ");
});
promise在这里是怎么运作的?有人能解释一下吗?
$("div")
选择器返回的每个对象上创建一个Deferred对象队列(使用.data()
函数可以看到这些对象(当您使用jQuery函数(如
fadeIn()
或fadeOut()
(向div添加一些CSS动画时,它会创建附加到每个div队列的Deferred对象。在父集合上使用$("div").promise().done()
可以检查是否所有的子Deferred对象队列都为空(jQuery将迭代子元素(。
我还没有深入研究jQuery源代码,但以下是我的理解。
$.prope返回一个promise,该promise在某一类型的所有操作结束后完成。默认情况下,"类型"为fx
(源(。当fx
队列为空时,promise将解析。
在小提琴中,调用fadeIn()
,它会将动画添加到fx
队列中。(默认情况下,$.fadeIn()
具有queue: true
。($.fadeOut
也执行相同操作。
当队列为空时,promise将解析。这把小提琴可以支持这一点。(动画运行时,队列处于"进程中"状态,但100毫秒后为空。(稍微复杂一点的问题是,注意到当我们使用$(el).queue('fx',[]);
清除fx
队列时,promise是如何完成的?
相关文章:
- Javascript日期格式类似于ISO,但本地
- toBoolean方法类似于toString
- 州和城市选择框类似于国家细分页面
- 通过传递图像的URL通过javascript读取/处理图像-类似于PHP中的file_get_contents
- 在BootStrap菜单栏中为所选项目设置背景,类似于BootStrap中的父导航选项
- 检测演示者工具的事件,类似于onmousedown
- 类似于Prism的Knockout js框架
- 创建类似于Google analytics的分析地图
- 敲除js变量设置类似于调用函数
- 如何处理javascript中的循环引用,类似于Excel提供迭代限制的方式
- 用null填充稀疏数组(类似于压缩两个数组)
- jQuery模态弹出的行为类似于确认和警报对话框
- 如何垂直淡出文本,类似于Amazon'的产品说明
- 如何在JavaScript中创建类似于something.function()的函数
- 使Dockerfile VOLUME的行为类似于docker compose volumes
- TypeScript代码类似于揭示模块模式结构
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 有可能对对象中的所有键进行原子更新吗?类似于阵列拼接的东西
- tinyMCE删除背景图像:“"类似于magento的url的内容
- javascript中是否有类似于Java中的Map类型