Как сделать так, чтобы функция, работающая с отложенным объектом jquery, работала как синхронная функция? - PullRequest
1 голос
/ 28 марта 2012

У меня есть API, который возвращает обещание от отложенного объекта.

Проблема заключается в том, что вызывающая сторона должна вести себя синхронно.Как вариант, чтобы представить команде, как бы заставить вызывающую функцию вести себя синхронно?

var foo = function() {
     var promise = returnsPromise();
     promise.done().fail();

     // insert magic here

     // function returns when either done() or fail() is completed.
}

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Если вам действительно нужно дождаться разрешения отложенного в этот момент, просто сделайте это точно так же, как если бы вы делали это без jQuery:

while (!promise.isResolved() && !promise.isRejected()) { }
1 голос
/ 28 марта 2012

В JS нет способа создать блокирующий вызов, который ожидает асинхронного результата. Вы должны изменить вызывающего абонента, чтобы принять обратный вызов вместо

0 голосов
/ 28 марта 2012

вы можете использовать .always() для выполнения чего-либо после того, как отложенный объект будет выполнен или не выполнен.это "done-fail-always", синоним "success-error-complete" и "try-catch-finally"

var foo = function(callback) {
    var promise = returnsPromise();
    promise.done().fail().always(function(){
        //do magic
        callback();
    });
}

, тогда вы называете foo как:

foo(function(){
    //the magic you want done after a done or fail
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...