Skip to content

Instantly share code, notes, and snippets.

@sousk
Created March 17, 2011 10:06
Show Gist options
  • Save sousk/874094 to your computer and use it in GitHub Desktop.
Save sousk/874094 to your computer and use it in GitHub Desktop.
combine multiple chains with jQuery.Deferred
$.when(
sushi_roll(),
dispatch()
).done(function() {
console.log('accepted:', arguments[0], arguments[1]);
});
var n = 0;
function dispatch() {
return $.Deferred(function(dispached) {
$.when.apply(this, $.map(['genmai-cha','soba','tenpura'], function(v) {
return $.Deferred(function(dfd) {
setTimeout(function() {
console.log("resolve "+v);
dfd.resolve(v);
}, Math.random() * 1500);
})
.done(function(msg) {
console.log('done:'+msg);
});
}))
.done(function() {
console.log('done all');
dispached.resolve('dispache done');
});
});
}
function sushi_roll() {
return $.Deferred(function(d) {
$.when(
proc_a(),
proc_b()
)
.done(function(deco,rice) {
console.log('accepted:',deco,rice);
d.resolve('roll');
});
});
}
function proc_a() {
return $.Deferred(function(d) {
setTimeout(function() {
d.resolve('set tsuna');
}, Math.random() * 1000);
});
}
function proc_b() {
return $.Deferred(function(d) {
setTimeout(function() {
d.resolve('set rice');
}, Math.random() * 2000);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment