`
highfly-s
  • 浏览: 100822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

异步并行串行编程 when

阅读更多

var data = {

"51": [{name:"a"},{name:"a1"}]

,"zhaoping": [{name:"b"}]

,"xxx": [{name:"c"}]

};

 

var groups = [];

for(var x in data){

var def = new $.Deferred;

 

var accounts =  data[x];

 

var accountsDef = [];

 

 

var initDef = new $.Deferred;

var pipeDef = initDef;

 

 

for (var i = 0; i < accounts.length; i++) {

(function(){

var account = accounts[i];

var site = x;

 

var d = new $.Deferred;

pipeDef.done(function(){

setTimeout(function(){

console.log('one account done: ' + account.name);

d.resolve(site);

}, 1000)

})

pipeDef = d;

accountsDef.push(d);

})()

};

 

(function(){

var innerDef = def;

$.when.apply($, accountsDef).done(function() {

console.log('one group done: ' + arguments[0]);

 

innerDef.resolve();

})

})()

 

 

 

initDef.resolve();

 

groups.push(def);

}

 

 

$.when.apply($, groups).done(function() {

console.log('all accounts finished');

})

 

分享到:
评论

相关推荐

    详谈nodejs异步编程

    它们通常提供诸如异步串行执行、并行执行等能力。使用这些库可以简化异步编程的复杂性,但不同的库风格各异,这增加了学习和适应的成本。 Promise是一种解决异步编程问题的模式,它代表一个将要完成且不可改变的...

    示例:异步编程:.NET4.X数据并行

    本节将深入探讨.NET 4.x中的数据并行,以及如何使用`Parallel Task`进行高效编程。 一、`Parallel Task`基础 `Parallel Task`是.NET Framework 4.x引入的一个新概念,它基于任务并行库(TPL,Task Parallel Library...

    iOS GCD开发总结整理

    GCD的核心是队列,分为两种主要类型:串行队列和并行队列。串行队列一次仅执行一个任务,而并行队列则可以同时处理多个任务。 - **串行队列**:任务按照进入队列的顺序依次执行,避免了线程间的竞争条件。 - **并行...

    UART的VHDL实现

    UART(通用异步收发传输器)是一种广泛用于设备间串行通信的标准接口。在VHDL中实现UART,主要是为了在硬件描述语言层面构建一个能够处理数据传输的逻辑电路。下面将详细介绍UART的VHDL实现,以及与之相关的知识点。...

    OC- GCD延时-示例代码

    - 自定义队列(Custom Queues):开发者可以创建自己的串行或并行队列,满足特定需求。 2. **Dispatch After** `dispatch_after`函数是GCD提供的一种延迟执行任务的方式。它接受四个参数: - `dispatch_time`:...

    VHDL实例100 常用实例源代码

    VHDL中的移位寄存器设计通常会涉及到并行加载和串行输入/输出的操作模式,以及左移、右移的选择。 再比如,多路选择器(MUX)和译码器(Decoder)是数字系统中的常见选择和路由设备。VHDL中,这两者的实现主要依赖...

    jQuery中的Deferred和promise 的区别

    Promise和Deferred的另一个重要应用场景是并行和串行执行多个异步操作。使用$.when()函数,我们可以等待一组Promise都完成,或者等待第一个Promise完成: ```javascript var promise1 = $.ajax("/myServerScript1")...

    jQuery常见问题解答部分动态读取雅虎及谷歌数据

    6. **性能优化**:考虑到性能,可能需要使用$.ajaxStop()和$.ajaxStart()来监听Ajax请求的开始和结束,或者使用$.when()和$.deferred()来实现异步任务的并行和串行执行。 通过以上讨论,我们了解到在jQuery中动态...

    jQuery.deferred对象使用详解

    jQuery deferred对象是jQuery中一个重要的概念,它在jQuery 1.5版本中引入,用于更...由于deferred对象是对Promises接口的实现,它也成为了现代JavaScript异步编程模式的基石,被广泛应用于各种前端和Node.js编程中。

    JavaScript多并发问题如何处理

    然而,在需要并发请求的场景中,将并行改为串行会显著降低页面性能,因为每个请求必须等待前一个请求完成才能开始。 2. **回调函数**: 回调函数是处理异步操作的最基础方式,但在并发请求较多时,回调地狱...

Global site tag (gtag.js) - Google Analytics