Как я могу использовать URL, полученный посредством вызова jQuery .get, для выполнения другого вызова? - PullRequest
2 голосов
/ 30 марта 2020

По сути, я пытаюсь сделать следующее:

var mydata = null;
jQuery.get(ANOTHER_URL, function(data) {
    mydata = data;
}).then(jQuery.get(parsingFunction(mydata), function(otherData) {/*do stuff with otherData*/}));

parsingFunction(notYetAnURL) {
   /*does stuff with notYetAnUrl*/
   return nowIsURL;
}

Проблема в том, что ... это не работает. Когда происходит второй вызов jQuery .get, mydata кажется все еще равным null. Я новичок в Ajax и асинхронном программировании в целом, поэтому я прошу прощения, если вопрос может показаться глупым, но я действительно не могу выйти из этого. Может ли кто-нибудь любезно помочь?

1 Ответ

1 голос
/ 30 марта 2020

Вы не используете функцию обратного вызова для вашего результата. Поэтому полезно использовать функции .done и .fail с функциями обратного вызова для лучшей читаемости и обнаружения ошибок.

function firstService(){
  jQuery.get(ANOTHER_URL)
    .done(function(data){
      // first result
      if(data){
        secondService(data);
      }
    })
    .fail(function(xhr, status, error) {
      console.log(xhr);
      console.log(status);
      console.error(error);
  });
}

function secondService(newData){
  jQuery.get(getSecondServiceUrlFromData(newData))
    .done(function(data){
      // second result
    })
    .fail(function(xhr, status, error) {
      console.log(xhr);
      console.log(status);
      console.error(error);
  });
}

function getSecondServiceUrlFromData(data) {
   /*does stuff with notYetAnUrl*/
   return nowIsURL;
}

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