Попытка сохранить значение обратного вызова jquery, но код работает не по порядку - PullRequest
0 голосов
/ 20 сентября 2009

У меня есть код, который делает это:

function A(){
    $.ajax({
        ...blah blah...
        success: function(data){
            return data;
    });
 }

, а потом я пытаюсь использовать данные позже:

var x = A();
x.doSomething();

но x никогда не сохраняется, так как A () занимает некоторое время. Есть ли способ избежать этого?

Ответы [ 3 ]

1 голос
/ 20 сентября 2009

Другие вопросы по той же теме:

Я уверен, что есть и другие. Однако совет во всех из них сводится к двум путям.

Передача обратного вызова по линии

function A(callback){
    $.ajax({
        //...blah blah...
        success: function(data){
          if (typeof callback == 'function') callback(data);
        }
    });
 }

 // passing our function through will cause it to be called after the data
 // is received
 A(function(data) {
  data.doSomething();
 }); 

Синхронизация AJAX

Эта опция кажется более простой, но она также блокирует выполнение всех сценариев , пока она ожидает вашего запроса AJAX, и, следовательно, не так желательна

function A() {
  var retValue;
  $.ajax({
    async: false,
    success: function(data){ 
      retValue = data;
    }
  });
  return retValue;
}

var x = A();
x.doSomething();
0 голосов
/ 20 сентября 2009

Взяв ответ медика и расширив его:

Почему бы не предпринять немедленное действие в случае успеха, как в:

function A()
{
  $.ajax
  (
    {
      success: function(data)
      {
        data.doSomething();
      }
    }
  );
}
0 голосов
/ 20 сентября 2009

Почему бы не манипулировать данными внутри обратного вызова?

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