Как работают асинхронные методы - PullRequest
3 голосов
/ 01 апреля 2010

Мне интересно, может ли кто-нибудь помочь мне понять некоторые асинхронные концепции JavaScript ...

Скажем, я делаю асинхронный вызов ajax так:

  xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange= myFoo;
  xmlhttp.open("GET",url,true);

Вот моя функция обратного вызова:

function myFoo()
{
if (xmlhttp.readyState==4)
  {
  if (xmlhttp.status==200)
    {
    // Success message
    }
  else
    {
    // some error message
    }
  }
}

Теперь, где и когда снова начинается путь выполнения? После того, как я сделал вызов open (), продолжается ли выполнение непосредственно под open (), и другой «поток» входит в асинхронную функцию после завершения запроса ajax?

Или браузер ожидает завершения запроса, выполняет асинхронный вызов, а затем выполнение продолжается сразу после открытия?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010
1 голос
/ 01 апреля 2010

Во-первых, вам не хватает вызова xmlhttp.send.

Браузер не ожидает продолжения запроса после открытия. В этом вся идея асинхронного вызова.

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