Ajax-вызов не должен ждать ответа - PullRequest
2 голосов
/ 05 июля 2011

Я использую вызов ajax в своем классическом приложении asp для выполнения хранимой процедуры.
Но я не хочу ждать, пока запустится хранимая процедура (хранимая процедура занимает около 5-10 минут.).
Ajax должен вызвать хранимую процедуру и должен немедленно вернуться.
Я хочу, чтобы вызов Ajax не ждал ответа.

Вот мой фрагмент кода:

1)  $.ajax({  
  type: "POST",  
  url: "runstoredprocedure.asp",  
});    
2)  setInterval(function(){  jQuery("#list").trigger("reloadGrid"); },10000);  

Это два вызова ajax, которые я использую. первый работает примерно 5-7 мин. Второй не стреляет, пока не закончится первый. Но немедленно мне нужно позвонить на второй вызов AJAX.

Может кто-нибудь помочь мне в этом вопросе.

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

JavaScript запускает запрос как часть другого потока, и любой код, следующий за вашим вызовом ajax, будет немедленно выполнен. Сказав это заблуждение об асинхронности JS:

People take for granted that because it’s asynchronous, it’s a thread. They are partially right. There must be a thread created by the browser to keep the javascript running while it makes a request to the server. It’s internal and you don’t have access to that thread. But, the callback function called when the server responds to the ajax request is not in a thread.

I’ll explain clearer. If javascript runs some code that takes 5 seconds to execute and an ajax response arrives at 2 seconds, it will take 3 seconds before it will be executed (before the callback function is called). That’s because javascript itself doesn’t create a thread to execute the ajax response from the server and simply waits that all executions are terminated before starting a new one.

So if you’re running a lot of ajax requests simultaneously, you might get some weird behavior because they will all wait one on another before executing themselves.

Последнее утверждение относится к вашей причине.

Выдержка из блога: http://www.javascriptkata.com/2007/06/04/ajax-and-javascript-dont-use-threads/

Интересно читать: http://www.javascriptkata.com/2007/06/12/ajax-javascript-and-threads-the-final-truth/

2 голосов
/ 05 июля 2011

AJAX по умолчанию является асинхронным (и это опция по умолчанию во всех библиотеках javascript). Например, в jQuery:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...