Simple and clean asynchronous/nonblocking processing system JSDeferred (is like MochiKit and with some extension) with jQuery supports.
jQuery supports: overwrite ajax functions get, post and getJSON to return Deferred object (no arguments change).
Collect some asynchronous resources by ajax.
parallel([
$.get("a.html").next(function (data) {
return data.match(/([^<]+)<\/title>/);
}),
$.get("b.txt" ).next(function (data) {
return data.match(/##\s*([^<]+)\s*##/);
}),
$.getJSON("c.json").next(function (data) {
return data.title;
})
]).next(function (values) {
print("Titles "+values.join(", "));
});
Divided loop for non stress browsing. When long time processing is required, it is bad that simply using only for
loop because it stops browser appearance. Deferred resolves it with bare minimum of effort.
loop({begin: 1, end:100, step:10}, function (n, o) {
print(["Processing divided loop:n=", n].join(""));
for (var i = 0; i < o.step; i++) {
var j = n + i;
print(j);
}
});
Like tail call code. If you are habituated to functional programming, this syntax may be familiar to you.
next(function () {
function pow (x, n) {
function _pow (n, r) {
if (n == 0) return r;
return call(_pow, n - 1, x * r);
}
return call(_pow, n, 1);
}
return call(pow, 2, 10);
}).
next(function (r) {
log([r, "end"]);
});
学会使用Deferred对象以及其相关函数, 可以优雅的解决开发过程中一些异步执行问题 ----应用篇---- 开发场景 你是否经历过这种代码场景: function demo1(){ ..... const result = demo2(); if(result){ .... }else{ .... } ....
概述 deferred对象是jQuery对Promises接口的实现。简单说,Promises是异步操作的通用接口,扮演代理人(proxy)的角色,将异步操作包装成具有同步操作特性的特殊对象。异步操作的典型例子就是Ajax操作、网页动画、web worker等等。 jQuery的所有Ajax操作函数,默认返回的就是一个deferred对象。 Promises是什么 由于JavaScript单线程的
今天在项目中遇到了Deferred()的方法,虽然项目中使用的是dojo,但是其实各个框架都是相通的,以前都没有遇到过,所以今天就在网上找了些资料学习了一下: 定义和用法: $.Deferred() 是一个构造函数,用来返回一个链式实用对象方法来注册多个回调,并且调用回调队列,传递任何同步或异步功能成功或失败的状态。 提示: $.Deferred() 构造函数创建一个新的 Deferred(延迟)
<span style="font-size:18px;"><script type="text/javascript" src="/js/jquery-1.11.2.js"></script> <script type="text/javascript"> jQuery(function($){ /*当两个异步方法都执行完毕后,执行回调*/ $.when(ajax1(),ajax2()
使用jquery 的 deferred 出现Uncaught TypeError: Cannot read property 'done' of undefined错误 form_vm.change_widget_type("save_form").done(function(data){ console.log("继续执行其他字段的保存" , data) }).fail(functio
一,deferred的使用和基本原理 具体的用法可以参见阮一峰的一篇日志: http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html 简单的说,deferred对象就是一个异步回调队列。 deferred对象最大的作用就是用在ajax中实现异步回调, 在没有deferre
jQuery.Deferred和Promise (转 阮一峰) 引子 JS对无法及时得到结果的操作,一般都是进行异步操作,然后通过某些模式来得到结果。jQuery开始在版本1.5中提供了Deferred对象,这是一个基于 CommonJS Promises/A的设计,为了方便异步操作。在jQuery版本1.8中,使用Promise,可以采用promise对象提供操作。 概述 deferred对象代
以前写的,后来想不起来了。写在这里以便查找 Deferred objects对我来说就是如果页面里面有两个ajax call对数据库进行操作。比如说两个grid 读取,Ajax执行异步操作的时候,页面显示loading...; 当两个操作都完成时,loading 隐藏 以下是代码片断 $(document).ready(function(e) {
<html> <script src="./jQuery-min-v3.3.1.js"></script> <body> <h1 class="click-me">测试jq的$.Deferred()方法</h1> <p>摘抄于:https://www.cnblogs.com/guoyansi19900907/p/5000267.html</p> </body>
一、什么是deferred对象? 简单说,deferred对象就是jQuery的回调函数解决方案。deferred对象的含义就是”延迟”到未来某个点再执行。 它解决了如何处理耗时操作的问题,对那些操作提供了更好的控制,以及统一的编程接口。 二、ajax操作的链式写法 传统写法: $.ajax({ url: "baidu.com", type: "get", success:
本系列文章都是基于jquery1.6.4的,请参照源代码。 今天,我们来研究jQuery._Deferred方法。和往常一样,先放源代码。 jQuery.extend({ // Create a simple deferred (one callbacks list) _Deferred: function() { var // callbacks list callbacks =
1、deferred的英文意思是:延期的 2、deferred的思想:当遇到处理耗时很多的js数据请求时,同步或者异步的操作都可能会碰到,客户端不能一直等待下去,这时候我们的处理思路是给该请求注册一个回调事件,等服务器有结果返回时执行。总之,deferred就是回调方法的解决方案。 3、故事背景: 当去超市定购一台家电,因为超市暂时没货需要从别的仓库调货(这时就产生了一个deferred),货到后
ES6原生提供的Promise对象已成为JavaScript实现异步编程的标准方式,而jQuery提供的Deferred对象,本质上是对Promise的进一步封装和增强。 以下为jQuery对Deferred的官方说明: As of jQuery 1.5, the Deferred object provides a way to register multiple callbacks into
阅读了阮一峰老师的jQuery的deferred对象详解,自己整理一下。 0. jQuery Deferred对象背景 随着WEB单页应用的普及,现在越来越多的页面逻辑已经交由JS代码来处理,其中难免有向后台请求资源等费时操作。 由于浏览器是单线程执行JS代码, 所以为了防止在请求的同时页面出现卡死的现象,提出了异步请求(ajax)。 我们可以将渲染返回数据的操作在异步请求的回调中执行, 避免页面
之前的文章"javascript异步代码的回调地狱"中提到了编写AJAX代码经常遇到的3个问题,现在我们看下如何利用then()解决第2个问题:如果AJAX请求之间存在依赖关系,我们的代码就会形成Pyramid of Doom(金字塔厄运)。比如我们要完成这样一件事:有4个供Ajax访问的url地址,需要先Ajax访问第1个,在第1个访问完成后,用拿到的返回数据作为参数再访问第2个,第2个访问完成