Принудительно выполнить шаг в функции только после завершения вызова ajax?

0

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

Теги:

2 ответа

0
Лучший ответ

Чтобы добиться этого "приостановленного" поведения, вы хотите поместить поведение в объект обетования. https://api.jquery.com/jQuery.ajax/

$.ajax({
   url: "test.html",
   data: myData
}).success(function() {
  //put your code here this will only fire after it returns successfully
}).error(function() {
  //This will fire if there is an error 
});
  • 1
    Спасибо за объяснение и пример. Я хочу дать вам и другому ответчику + представителя, но я не могу сделать это в настоящее время.
0

То, о чем вы говорите, будет синхронным вызовом, который не рекомендуется, так как он заморозит пользовательский интерфейс.

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

function DoSomeCall()
{
    $.post( "ajax/test.html", function( data ) {
      //Do your follow on code in here, in the callback.
    });

    //Don't do any code here that relies on the AJAX being finished first.
}
  • 0
    Я действительно попробовал что-то подобное, и мой экран на некоторое время завис. Это сработало, но моим пользователям определенно не понравятся черный экран и другие странности, связанные с ним :( Поскольку у меня есть ряд функций, которым требуется доступ к переменной, которую я могу получить только при асинхронном вызове, я надеялся, что был отдельный способ сделать это. Но большое спасибо за объяснения!
  • 0
    Это не должно приводить к зависанию вашего экрана, оно должно быть асинхронным и ничего не делать во время ожидания. Вы уверены, что именно это, а не ваш код следования вызывает замораживание?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню