Цепной запрос ajax правильно в Javascript - PullRequest
0 голосов
/ 05 марта 2019

Эй, люди, у меня возникла проблема, и я не могу найти решение.Я пытаюсь связать 2 функции вызова остальных и после них использовать функцию, которая использует объекты, возвращенные обеими.По какой-то причине что-то не работает, я думаю, что это связано с синтаксисом, который я написал.Я хотел бы понять, почему мой код:

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>

    <script>
      var users = [];
      var user = null;

      function restCallA() {
        $.ajax({
          url: "https://reqres.in/api/users?page=2",
          type: "GET",
          success: function(response) {
            users = response.data;
          }
        });
      }
      function restCallB() {
        $.ajax({
          url: "https://reqres.in/api/users/2",
          type: "GET",
          success: function(response) {
            user = response.data;
          }
        });
      }
      function myFun() {
        users.push(user);
        console.log(users);
      }
      restCallA()
        .then(restCallB())
        .then(myFun());
    </script>
  </body>
</html>

ошибка:

test.html: 38 Uncaught TypeError: Невозможно прочитать свойство 'then' из неопределенного

1 Ответ

0 голосов
/ 05 марта 2019

Оба restCallA и restCallB должны возвращать результат каждого из их вызовов $.ajax, затем вы можете связать их, используя then().

Другая проблема заключается в том, что вы вызываете restCallB и myFunвместо передачи функций в качестве параметров:

restCallA()
        .then(restCallB())
        .then(myFun());

должно быть:

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