Область функции обратного вызова - PullRequest
0 голосов
/ 27 января 2011

Я хочу реализовать функцию, которая выполняет запросы ajax (response - json) до тех пор, пока в ответе не появится свойство «next».После этого мне нужно выполнить некоторую функцию обратного вызова.Каков наилучший способ для этого?Мой код ниже не работает из-за неправильной области обратного вызова, и я не могу себе представить, как правильно передать его.

_requestPhotos = function(url, callback) {
  getYFContent(url, function(data) {
    // some actions

    if (!!data.next) {
      _requestPhotos(data.next, callback);
    } else {
      callback(smth);
    }
  });
};

1 Ответ

0 голосов
/ 27 января 2011

Нет явных ошибок в сценарии, который вы опубликовали. Например, эквивалентный тест может выглядеть следующим образом:

alertResult = function(text) {
   console.log("Result is: " + text);
}

doRecursive = function(data, callback) {
   if(!!data.next) {
      doRecursive(data.next, callback);
   } else {
      callback(data.value);
   }
}

var d = { value: 1, next: { value: 2, next: { value: 3 }}};

doRecursive(d, alertResult);

Результат записи - "Result is: 3", что и следовало ожидать.

Ошибка в другом месте. Как вы вызываете это в первый раз, какой ответный вызов вы передаете ему (и как он определяется) и что именно делает getYFContent?

...