JavaScript
function get(a, b, c, t) {
return $.Deferred(function(dfrd) {
setTimeout(function() {
dfrd.resolve(a, b, c);
}, t);
});
}
var p1 = Promise.resolve(get('A','B','C',1000).then(
function(a, b, c) { return { a:a, b:b, c:c }; },
function(a, b, c) { return { a:a, b:b, c:c }; }
)); // voila 1!
var p2 = Promise.resolve(get('X','Y','Z',2000).then(
function(a, b, c) { return { a:a, b:b, c:c }; },
function(a, b, c) { return { a:a, b:b, c:c }; }
)); // voila 2!
var p3 = Promise.all([p1, p2]).then(
function(results) { console.dir(results); },
function(results) { console.dir(results); }
);
var p1 = get('A','B','C',1000).then(
function(a, b, c) { return { a:a, b:b, c:c }; },
function(a, b, c) { return { a:a, b:b, c:c }; }
); // voila 1!
var p2 = get('X','Y','Z',2000).then(
function(a, b, c) { return { a:a, b:b, c:c }; },
function(a, b, c) { return { a:a, b:b, c:c }; }
); // voila 2!
var p3 = Promise.resolve($.when(p1, p2).then(function() {
return [].slice.call(arguments);
})).then(
function(results) { console.dir(results); },
function(results) { console.dir(results); }
);