Это действительно легко с отсроченными обещаниями jQuery 1.5 .
В следующем примере создается Deferred и для двух функций на основе таймера устанавливается resol отклонить Отложено после случайного интервала.В зависимости от того, кто выстрелит первым, «выигрывает» и вызывает один из обратных вызовов.Второй тайм-аут не действует, так как Отложенный уже завершен (в разрешенном или отклоненном состоянии) с первого действия тайм-аута.
// Create a Deferred and return its Promise
function asyncEvent() {
var dfd = new jQuery.Deferred();
setTimeout(function() {
dfd.resolve('hurray');
}, Math.floor(Math.random() * 1500));
setTimeout(function() {
dfd.reject('sorry');
}, Math.floor(Math.random() * 1500));
return dfd.promise();
}
// Attach a done and fail handler for the asyncEvent
$.when( asyncEvent() ).then(
function(status) {
alert( status + ', things are going well' );
},
function(status) {
alert( status + ', you fail this time' );
}
);
Вы можете легко изменить этот пример, чтобы удовлетворить ваши потребности:1013 *