首页 > 其他分享 >Jquery Deferred 对比 Promise

Jquery Deferred 对比 Promise

时间:2023-05-25 11:11:22浏览次数:30  
标签:Jquery resolve bind Deferred Promise dfd 加载

javascript处理异步逻辑有多种方式,这里只对比 JQuery的Deferred 和 ES6的Promise。场景是判断网页中所有图片是否加载完(加载异常404也算加载完毕)。

JQuery Deferred 方式

 1 var imgdefereds = [];
 2 $('img').each(function () {
 3     var dfd = $.Deferred();
 4 
 5     $(this).bind('load', () => dfd.resolve()) //
 6         .bind('error', () => dfd.resolve());
 7 
 8     if (this.complete)
 9         dfd.resolve()
10 
11     imgdefereds.push(dfd);
12 });
13 
14 $.when.apply(null, imgdefereds).done(() => {
15     console.info("Jquery Deferred 所有图片加载完");
16 });

ES6 Promise

 1 let ps = $("img").map((i, dom) => {
 2     if (dom.complete)
 3         return Promise.resolve("complete");
 4 
 5     return new Promise((resolve, reject) => {
 6         $(dom).bind('load', () => resolve("load")) //
 7             .bind('error', () => resolve("error")) //
 8     });
 9 });
10 
11 Promise.all(ps).then(() => {
12     console.info("Promise 所有图片加载完成")
13 })

 

总结:这两种方式整体来说,Promise更简洁,未来的趋势。

标签:Jquery,resolve,bind,Deferred,Promise,dfd,加载
From: https://www.cnblogs.com/songyz/p/17430587.html

相关文章

  • 关于对Promise 以及async的理解!
    为了解决Promise.then和.catch看起来比较乱以及写起来比较麻烦的问题,可以用async配合await来调用Promise实现异步操作。代码的写法和同步有点类似。例如:asyncfunctionget(url){try{letresp=awaitfecth(url);returnresp.json();}catch(e){//出错了}}用a......
  • 用jquery或js获取select标签中选中的option值及文本
    本文目录一、示例二、获取option的文本三、获取option中value的值四、代码展示一、示例<selectid="selectedTest"οnchange="doSomething();"><optionvalue="abc">北京</option><optionvalue="edf">上海</option><opt......
  • JQuery和JS的入口函数比较
    首先要知道JQuery入口函数和JS入口函数的区别:区别一: 在页面中书写个数不同:(1)JS的入口函数只能出现一次,出现多次会存在后者将前者事件覆盖的问题。(2)JQuery的入口函数,可以出现任意多次,并不存在事件覆盖问题。 区别二:执行时机不同:(1)JS的入口函数是在所有的文件资源加载......
  • JQuery框架 -- JQuery怎么使用和各个版本的区别、JQuery对象和JS对象区别、JQuery选择
    目录一、概念:一个JavaScript框架。简化JS开发。二、快速入门三、JQuery对象和JS对象区别与转换四、选择器:筛选具有相似特征的元素(标签)4.1、基本操作学习4.2、选择器分类    1.基本选择器      2.层级选择器      3.属性选择器      4.过滤......
  • Deferred Components-实现Flutter运行时动态下发Dart代码 | 京东云技术团队
    导读DeferredComponents,官方实现的Flutter代码动态下发的方案。本文主要介绍官方方案的实现细节,探索在国内环境下使用DeferredComponents,并且实现了最小验证demo。读罢本文,你就可以实现Dart文件级别代码的动态下发。一、引言DeferredComponents是Flutter2.2推出的功能,依赖于......
  • jquery validate实现表单验证 (正则表达式)
    jqueryvalidate实现表单验证(正则表达式)于2016-08-0320:01:24发布分类专栏:原创javascript文章标签:javascriptjquery正则表达式表单验证validate版权原创同时被2个专栏收录37篇文章0订阅订阅专栏javascript4篇文章0订阅订阅专栏一、目的为......
  • Jquery操作打卡
    01jquery动态操作节点1.动态操作节点原js:-创建节点createElement('div')createTextNode('内容')-添加节点父节点.appendChild(子节点)父节点.insertBefore(......
  • 【整理】jQuery知识点4
    ★★★=============================================================jQuery-AJAXAJAX是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。关于jQuery与AJAXjQuery提供多个与AJAX有关的方法。通过jQueryAJAX方法,您能够使用H......
  • jQuery Mobile笔记二
    6、按钮6.1 链接按钮(1)默认按钮,填充其外层容器的整个宽度 <ahref="#"data-role="button">Button</a>(2)紧凑按钮,宽度与内部的文本和图标的宽度相同<ahref="#"data-role="button"data-inline="true">Button</a>6.2 表单按钮<buttontype......
  • 几篇不错的jquery源码总结的文章
    网上看到的几篇写的不错的jquery源码的文章,感觉不错,转载过来,以备温习之用,有时间自己也该看看源码了。 http://www.iteye.com/topic/349020http://www.iteye.com/topic/545971http://www.iteye.com/topic/1126505http://www.iteye.com/topic/1126505http://www.iteye.com/topic/714......