Понимание проблемы - отложенное сцепление Jquery - PullRequest
1 голос
/ 09 апреля 2019
function ajax_call() {

    var ajaxCallMock = $.Deferred().resolve('A');

    return ajaxCallMock.done(function(response) {

            return 'B';

    });
}



ajax_call().done(function(response) {
    console.log(response);
});

Я ожидаю, что вывод консоли будет «B», но я получу «A». Почему?

1 Ответ

2 голосов
/ 09 апреля 2019

Используйте then() вместо done(), так как done не возвращает новое обещание.

function ajax_call() {

  var ajaxCallMock = $.Deferred().resolve('A');

  return ajaxCallMock.then(function(response) {
    return 'B';
  });
}



ajax_call().then(function(response) {
  console.log(response);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
...