2015-08-04 10 views
0

У меня есть этот кусок кодаAjax не выполняется асинхронно

function getMesssages(id,c) { 


     function waitForServerCall(id,c) { 

      $.get(href("~/polling/" + id), function (response) { 

       var r = c(response); 
       if (r) { 
        return false; 
       } 

       waitForServerCall(id); 
      }); 

     } 

     waitForServerCall(id,c); 

     $.post(href("~/batch/export/?batches=3344&pollid=" + id), function (response) { 
      c(response); 
      cancelCall = true; 
     }); 
    } 

$.get внутри метода waitForServerCall получить только выполнить, когда $.post Получать ответ сервера. Зачем?

Это является ajaxSettings:

accepts: Object 
async: true 
contentType: "application/x-www-form-urlencoded; charset=UTF-8" 
contents: Object 
converters: Object 
flatOptions: Object 
global: true 
isLocal: false 
jsonp: "callback" 
jsonpCallback:() 
processData: true 
responseFields: Object 
type: "GET" 
url: "http://localhost:59161/" 
xhr: In() 
__proto__: Object 

Update. То, что я делаю, является длинным опросом, запрос на отправку является длительным процессом, поэтому мне нужно знать некоторые события, которые запускает сервер, метод waitForServerCall уведомляет клиента о произошедших событиях. Но поскольку метод $ .get выполняется после восстановления ответа $ .post, процесс уведомления не работает.

Обновление 1: Я использую .NET 4.0 и JQuery 1.9.1.

Да, запрос $ .get получает выполнение сначала, но не ответ возвращается, пока $ .post не получит ответ. Как только $ .post получит ответ, $ .get выполнит правильно. Но я ожидаю, что $ .get получит ответ сервера, даже если $ .post еще не получил ответа.

+0

Пожалуйста, опишите, какое поведение вы пытаетесь достичь. Вы пытаетесь описать проблему, но не говорите, как вы хотите, чтобы она работала. Кроме того, кажется, что у вас есть ошибка после вызова 'waitForServerCall (id);' потому что вы не передаете второй аргумент. – jfriend00

+1

Откуда вы знаете? Описанные симптомы не имеют смысла. Звучит скорее как случай кода, который делает то, что написано, но не то, что вы ожидали – charlietfl

+0

Прочтите обновление, пожалуйста, – Misters

ответ