deferred.promise( [target ] )

jQuery不是过时工具,而是前端演进的底层解剖课 jQuery本质上是JavaScript在浏览器兼容性碎片化时代的抽象实践,它揭示了DOM操作、事件模型与异步通信等核心前端概念的原始形态。其选择器引擎Sizzle、事件委托机制和$.ajax封装,实为对原生API缺陷的系统性补全,体现了抽象层设计中性能与开发效率的经典权衡。理解jQuery,就是理解现代框架中polyfill、shim和适配器模式的起源;掌握其源码逻辑,能显著提升对Vue/React中事件绑定、动态DOM更新及请求管理的底层认知。本文以‘剧场版’结构还原jQuery三阶段演进,聚焦Sizz 阅读详情

原文摘自:http://www.css88.com/jqapi-1.9/deferred.promise/(jQuery官方文档中文翻译)


deferred.promise( [target ] )
  • target
    类型:  Object
    绑定 promise 方法的对象。

deferred.promise() 方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码。Promise (承诺)对象仅会暴露那些需要绑定额外的处理或判断状态的延迟方法(then, done, fail, always,pipe, progress, state,和 promise)时,并不会暴露任何用于改变状态的延迟方法(resolve, reject, notify,resolveWith, rejectWith, 和 notifyWith).

如果提供target参数,deferred.promise() 会将事件绑定到该参数上,然后返回该对象,而不是创建一个新的对象。 这个方法可以用于在已经存在的对象上绑定 Promise 行为的情况。

如果您要创建一个Deferred(延迟),并且保持这个Deferred(延迟)的引用,以便它可以在一些点来解决或拒绝。通过deferred.promise()定义Promise(承诺)对象即可。这样的话,其它的代码就可以注册回调函数或检查当前状态。

欲了解更多信息,请参阅文档< Deferred object.

例子:

Example: 创建一个延迟对象,并设定两个延时时间是随机的定时器,分别用于受理(resolve)和拒绝(reject)延迟对象。无论哪一个先执行,都会调用其中一个回调函数。而另一个定时器则不会产生任何效果,因为在最先调用的那个定时器处理中,延迟对象已经处于完成状态(resolved 或 rejected 状态)。同时,还会设定一个定时器进度(progress)通知函数,用于进度通知处理,并在文档的 "body" 中显示 "working..."。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
       
function asyncEvent() {
var dfd = jQuery.Deferred();
// Resolve after a random interval
setTimeout(function() {
dfd.resolve( "hurray" );
}, Math.floor( 400 + Math.random() * 2000 ) );
// Reject after a random interval
setTimeout(function() {
dfd.reject( "sorry" );
}, Math.floor( 400 + Math.random() * 2000 ) );
// Show a "working..." message every half-second
setTimeout(function working() {
if ( dfd.state() === "pending" ) {
dfd.notify( "working... " );
setTimeout( working, 500 );
}
}, 1 );
// Return the Promise so caller can't change the Deferred
return dfd.promise();
}
// Attach a done, fail, and progress handler for the asyncEvent
$.when( asyncEvent() ).then(
function( status ) {
alert( status + ", things are going well" );
},
function( status ) {
alert( status + ", you fail this time" );
},
function( status ) {
$( "body" ).append( status );
}
);
Example: Use the target argument to promote an existing object to a Promise:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
       
// Existing object
var obj = {
hello: function( name ) {
alert( "Hello " + name );
}
},
// Create a Deferred
defer = $.Deferred();
// Set object as a promise
defer.promise( obj );
// Resolve the deferred
defer.resolve( "John" );
// Use the object as a Promise
obj.done(function( name ) {
obj.hello( name ); // will alert "Hello John"
}).hello( "Karl" ); // will alert "Hello Karl"

C++20协程与Asio异步网络编程:告别回调地狱,实现线性异步代码 异步编程是现代高性能网络应用的核心技术,它通过非阻塞I/O操作避免线程等待,从而提升系统吞吐量和资源利用率。其基本原理是将耗时的I/O操作提交给操作系统,程序在等待期间可处理其他任务,通过事件循环机制在操作完成后回调处理结果。这种模式的技术价值在于能够以少量线程支撑大量并发连接,但传统回调模式容易导致代码嵌套过深、逻辑分散的“回调地狱”问题,严重影响可读性和可维护性。C++20引入的原生协程(Coroutines)为此提供了新的解决方案,它允许开发者以近乎同步的、线性的方式编写异步代码逻辑。在具体应用场景中 阅读详情

相关推荐

Electron 28 与 Qt 6.7 混合开发:3步集成C++模块提升Web应用性能

本文详细介绍了如何通过Electron 28与Qt 6.7的混合开发架构,在3步内集成C++模块以显著提升Web应用性能。通过Qt的C++后端处理计算密集型任务,结合Electron的前端优势,实现接近原生应用的性能表现,特别适合3D数据可视化、实时音视频处理等高性能需求场景。

weixin_30335353的博客 705

$.Deferred()的promise()方法-学习笔记

promise: function(obj) {           return obj != null ? jQuery.extend(obj, promise) : promise;         } 不传参为空时返回promise对象,现在看传参时并且是个对象,就是对传入的对象扩展了个promise上属性和方法。如:var dtd=$.Deferred(); var obj={};

caomingwumr8的博客 741

C++与JavaScript交互技术:WebAssembly与Node.js本地插件实战解析

在现代软件开发中,跨语言交互技术是实现高性能应用的关键。其核心原理是通过特定的桥接机制,让不同编程语言能够相互调用和共享数据,从而发挥各自的优势。这种技术的价值在于,它允许开发者将计算密集型任务交给高性能语言处理,同时利用动态语言的灵活性构建用户界面。在工程实践中,WebAssembly为浏览器端带来了接近原生的执行效率,而Node.js Native Addons则让JavaScript能够直接调用系统级功能。这些技术广泛应用于图形图像处理、音视频编辑、游戏引擎以及需要底层硬件访问的桌面应用中。本文聚焦于

weixin_33800463的博客 409

promise defer的使用方法

jj

weixin_42201346的博客 526

深入解析jQuery中Deferred的deferred.promise()方法

主要介绍了jQuery中Deferred的deferred.promise()方法,提醒千万要注意deferred.promise()与jQuery的.promise() 实例方法的区别,需要的朋友可以参考下

医学影像弹性形变处理

这段代码的主要流程是:读取 DICOM 医学影像,尝试使用 MONAI 进行弹性形变(根据版本适配),如果失败则使用 OpenCV 实现,最后可视化并保存处理结果。这样可以在不同环境下灵活处理医学影像的弹性形变需求。后面会写一篇解释弹性变形方法的短文。

wh_xia_jun的专栏 779

jQuery的deferred对象和promise对象

Promise是一种令代码异步行为更加优雅的抽象,有了它,我们就可以像写同步代码一样去写异步代码。jQuery从1.5版本开始实现了CommonJS Promise/A规范这一重量级方案,不过没有严格按照规范进行实现,有一些API上的差异。 1、deferred对象的方法: (1) $.Deferred() 生成一个deferred对象。   (2

adobe1992 2331

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1100

defer()promise和Promise之间的区别

如何解决defer()promise和Promise之间的区别?好吧,这是关于承诺解决方案源的。Q和其他许多库提供两个API: 您可以在其中创建一个递延函数,.resolve(value) 并承诺可以返回。-这是现代API,您可以在其中从完成源创建Promise。粗略地做: var d = Q.defer();setTimeout(function(){ d.resolve(); }, 1000)...

dituirenwu的博客 336

FPGA+CMV4000实战:从零搭建20fps成像系统的5个关键步骤(附避坑指南)

本文详细介绍了如何从零搭建基于FPGA和CMV4000传感器的20fps成像系统,涵盖硬件选型、SPI通信优化、LVDS数据采集、DDR2内存管理及系统集成等5个关键步骤。特别针对CMV4000传感器的SPI配置和高速数据处理的常见问题提供实用解决方案,帮助开发者避免常见陷阱,提升成像系统性能。

weixin_42628688的博客 428

基于STM32的无人机智能避障与路径规划系统设计

本文详细介绍了基于STM32的无人机智能避障与路径规划系统设计,涵盖硬件选型、传感器组合、软件架构及算法实现。通过多传感器数据融合和改进的VFH+算法,系统在复杂环境中实现92%以上的避障成功率。STM32微控制器的实时性和低功耗特性为无人机自主导航提供了可靠保障,适用于工业巡检、仓储物流等场景。

blockchain9miner的博客 877

JS - Promise使用详解3(jQuery中的Deferred)

上文介绍了ES6中的Promise,它完全遵循Promises/A规范。而我们熟悉的jQuery又有自己的Promise实现:Deferred(但其并不是遵循Promises/A规范)。本文就讲讲jQuery中Promise的实现。 一、Deferred对象及其方法 1,$.Deferred jQuery用$.Deferred实现了Promise规范。...

zlzbt 1020

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 531

jQuery Deferred, Promise如何用及一个动画例子

jQuery从1.5开始引入了一个新的对象,Deferred(), 在官方的说明文档中是这样介绍它的,它是一个可链式操作的工具对象,我们可以用它来注册多个回调函数到一个回调函数队列中,我们可以同步也可以异步的依据它的success或者failure状态来调用这个队列。 jQuery Deferred对象有很多方法,我们一般常用的仅仅是then(), done(), fail(),那让我...

weixin_30861459的博客 102

ADC实现模数转换Multisim电路仿真——硬件工程师笔记

8位模数转换器(ADC)是将模拟信号转换为8位数字信号的电子器件,具有256级量化能力。其工作原理分为采样、量化和编码三个阶段,关键参数包括分辨率、采样率、精度、线性度和信噪比。常见型号有ADC0804、ADC0808等,广泛应用于数据采集、音频处理、通信系统和消费电子产品中。典型应用时需要配置参考电压、模拟输入和数字输出引脚,并通过仿真实验验证转换效果(如-10V对应输出0,10V对应255)。硬件工程师需掌握其原理和参数选择,相关笔试面试资料可在优快云博客获取。

XU157303764的博客 1509

【AI技术赋能有限元分析应用实践】Abaqus有限元分析与深度学习结合20个案例与有限元分析数据来源方法说明

结合 Abaqus 和深度学习,数据的获取和处理是关键的一步。通过从仿真、实验、公开数据库或合成数据中获取数据,经过预处理后,可以将其用于训练深度学习模型。最终,将训练好的深度学习模型与 Abaqus 集成,用于材料行为预测、结构优化、非线性分析、损伤预测等任务,从而提升仿真效率和精度。

源代码杀手的博客 3213

15个值得开发人员关注的jQuery开发技巧和心得

## 4. 善用事件委托(Event Delegation)动态添加的元素,直接绑定事件是无效的。如果你还在维护老项目,这些技巧绝对能提升你的开发效率。下面这15个技巧,都是我踩过坑之后总结出来的实战经验。### 10. 选择器性能优化- 尽量使用ID选择器,它是最快的。### 8. 动画队列的控制jQuery动画是排队执行的,这既是优点也是坑。### 5. 链式调用的艺术jQuery的链式调用能大幅减少代码量,但注意。—## 总结jQuery虽然不再是前端的主流,但理解它的设计思想——

Bwn31QQe9的博客 162

用扩展点为 Fiori Elements 添加自定义动作:从原理到落地的完整实践

本文介绍了如何在基于OData V4的Fiori Elements应用中通过Extension Points添加自定义Action按钮。主要内容包括: 扩展点动作与标准注解动作的区别:扩展点用于非标准前端流程、组合操作等场景,需通过extensionAPI与框架交互。 扩展点动作的插入位置:可放置在List Report表格工具栏、Object Page页眉/页脚/Section工具栏等位置,并说明了相应的manifest.json配置节点。 配置模型与处理函数契约:详细说明了press、visible/e

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 250

jQuery的deferred对象详解

jQuery的deferred对象详解-阮一峰

AnitaSun的博客 168

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深入解析JavaScript Promise核心机制与应用实践

Promise作为JavaScript异步编程的核心解决方案,通过状态机机制(pending/fulfilled/rejected)实现了对异步操作的可控管理。其本质是一种标准化的事件订阅模式,通过then/catch方法注册回调函数,当异步操作完成时自动触发相应处理。这种模式有效解决了回调地狱问题,提供了链式调用、错误冒泡等特性。在工程实践中,Promise与async/await语法糖配合使用,能够实现更清晰的异步流程控制。典型应用场景包括网络请求并发控制(Promise.all)、超时处理(Promi

weixin_33862993的博客 370

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mass Framework外围模块宝典:瀑布流、选项卡、菜单等40+组件一次学透

mass Framework 是一个模块化、面向大规模开发的 JavaScript 框架,它的核心由种子模块、补丁模块和核心模块组成,而真正让开发者爱不释手的,是位于 [more](https://link.gitcode.com/i/3e5c1668c9a45f95c0d4485f65c91fb0) 目录下的**外围模块**。这里藏着瀑布流、选项卡、菜单等 40+ 个即插即用的组件与工具,覆盖

gitblog_00680的博客 410

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深入Kovenant实现原理:非阻塞并发与CAS算法的性能秘密

Kovenant 是 Kotlin 生态中一个优雅轻量的 Promise 异步库,它的魅力不仅在于简洁的 API,更在于底层精湛的工程实现。本文将从源码层面深入 Kovenant 的实现原理,拆解其非阻塞并发模型,并揭示 CAS 算法(Compare-And-Swap,比较并交换)如何成为性能的核心引擎。无论你是 Kotlin 新手还是进阶开发者,理解这些设计思想,都能帮助你写出更高性能的异步代码

gitblog_00242的博客 310

Kovenant配置详解:Context与Dispatcher调优的完整指南

Kovenant 是 Kotlin 生态中一个轻量而强大的 Promise 库,而 **Kovenant 配置** 的核心就在于 `Context` 与 `Dispatcher`。本篇文章将面向新手,用最易懂的方式讲清 Kovenant Context 配置、Dispatcher 调优、轮询策略选择等完整知识点,帮你避免默认配置下的性能陷阱,快速上手并发编程。 --- ## 先弄懂两个核心概念

gitblog_00648的博客 635

军工卫星视频大文件分片上传与断点续传实战

文件分片上传技术通过将大文件分割为多个小块进行传输,有效解决了网络不稳定导致上传失败的问题。其核心原理基于HTTP协议的分块传输机制,结合前端文件API实现切片处理。在军工、视频监控等需要传输超大文件的场景中,分片上传配合断点续传能显著提升传输可靠性。本文以卫星视频传输为例,详细解析如何改造WebUploader组件实现动态分片策略(根据文件大小智能调整分片尺寸)和跨浏览器兼容方案(涵盖IE11等老旧浏览器),通过AES-256加密分片和HTTPS双向认证满足军工级安全要求,最终使10GB文件上传效率提升3

weixin_33859844的博客 464

HarmonyOS 鸿蒙原生应用调用 C/C++ 三方库 —— NAPI 开发完整指南

本文系统介绍NAPI(Node-API)在HarmonyOS中的使用方法,帮助开发者实现ArkTS与C/C++代码的互操作。主要内容包括: NAPI核心概念:介绍napi_env、napi_value等关键概念及模块注册机制 开发环境配置:详细说明工程配置、CMake设置和类型声明 开发全流程:从函数编写、参数获取到类型转换和模块注册的完整步骤 数据类型转换:覆盖数值、字符串、布尔值、数组等类型的双向转换方法 实战指导:提供完整示例、API速查表、调试技巧和常见问题解决方案 文章强调NAPI在性能计算、复用

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 1206

Android开发核心技术解析:OpenJDK迁移与ReactNative优化

在移动开发领域,Java虚拟机技术演进直接影响Android应用性能表现。OpenJDK作为开源实现,通过优化内存管理和指令集,显著提升了移动端应用的执行效率。ReactNative框架则通过JavaScript与原生代码的混合编程模式,为跨平台开发提供了高效解决方案。本文将重点解析OpenJDK在Android生态中的迁移实践,包括兼容性处理方案和性能调优技巧;同时深入探讨ReactNative在大型项目中的架构设计与性能监控体系,帮助开发者应对复杂业务场景下的技术挑战。

dianxiangong2403的博客 359
上一篇: 堆内存和栈内存区分
下一篇: jQuery.ajax()
hellochenlu
博客等级 码龄14年 97粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值