Обещание Ajax Javascript возвращает неправильное значение

У меня настоящая проблема с обещаниями. Я использую API так, что вы сначала запрашиваете идентификатор отчета, а затем запрашиваете идентификатор отчета, чтобы получить свои данные.

Раньше мой код ajax отлично работал с этим, пока я не попытался реализовать обещания. Теперь он отвечает только идентификатором reportID из запроса "get", но на самом деле я хочу, чтобы возвращались данные от "return (result);".

Я думаю, это связано с тем, что я использовал "return" перед getReport вверху, но если я удалю его, это нарушит мое обещание.

index2.html:16 Uncaught TypeError: Cannot read property 'done' of undefined at index2.html:16

index.html

function firstFunction() {
  return getReport(2, 'queue', 'hour', '2018-09-09', '2018-09-10', 'pageviews', 'page', 's1390_5bbb443734ab6a764639ff37');
};
var test = firstFunction();
test.done(function(data) {
  alert(data);
});

report.js

function getReport(ref)
{

   return $.ajax({
        url: "report.php", 
        dataType: 'json',
        data: { 
            ref: ref
        },
        success: function(result){
           if (type == 'queue')
           {   
               getReport(result.reportID, 'get');
           }
           else if (result.error == "Bad Request") 
           {
           }
           else if (result.error == "report_not_ready") 
           {
           setTimeout(function(){
            getReport(ref, 'get');
            },1000);  
           }
           else
           {
           return (result);
           }
         }
    });
}

Вы используете поле успеха, а также обещание ... Мы не используем обещание. Все реализации в поле "success" должны вызываться в методе "done".

binariedMe 08.10.2018 18:47

попробуйте что-то вроде этого $ .ajax (). done (d => $ .ajax.is)). done ((finalData) => console.info (finalData))

binariedMe 08.10.2018 18:48

@ Джимми, почему вы передаете несколько аргументов в getReport(), когда используете только первый ref?

Zakaria Acharki 08.10.2018 19:30

@ZakariaAcharki Я вырезал их, чтобы было проще понять вопрос

Jimmy 08.10.2018 19:32

Хорошо, я вижу ...

Zakaria Acharki 08.10.2018 19:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
30
0

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