Получить responseJson из результата JavaScript

Я создавал маршрут, который возвращает мне все названия продуктов. Однако с javascript код пишется так:

getSku: function () {
    return $.getJSON(Routing.generate(this.options.urls.get))
        .promise();
},

Поэтому я пока не могу извлечь данные из этого ответа. Если я консоль записываю этот getSku, я получаю:

{state: ƒ, always: ƒ, then: ƒ, promise: ƒ, pipe: ƒ, …}
always:ƒ ()
done : ƒ ()
fail : ƒ ()
pipe : ƒ ( /* fnDone, fnFail, fnProgress */ )
progress : ƒ ()
promise : ƒ ()
state : ƒ ()
then :ƒ ( /* fnDone, fnFail, fnProgress */ )
__proto__:Object

И когда я удаляю .promise (), я получаю:

{readyState: 1, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort:ƒ ( statusText )
always:ƒ ()
complete:ƒ ()
done:ƒ ()
error:ƒ ()
fail:ƒ ()
getAllResponseHeaders:ƒ ()
getResponseHeader:ƒ ( key )
overrideMimeType:ƒ ( type )
pipe:ƒ ( /* fnDone, fnFail, fnProgress */ )
progress:ƒ ()
promise:ƒ ()
readyState:4
responseJSON:Array(5)
0:{id: 1, identifier: "test_1", label: "test_1"}
1:{id: 2, identifier: "1000000", label: "1000000"}
2:{id: 3, identifier: "1000001", label: "1000001"}
3:{id: 4, identifier: "1000002", label: "1000002"}
4:{id: 5, identifier: "1000003", label: "1000003"}

И мне нужно как-то поймать этот результат responseJson. Но я не знаю, как это поймать. Это backbonejs. Я искал разные решения, но всегда возвращаю undefined. Пожалуйста, помогите мне понять, как получить этот json-результат. Спасибо.

Поведение ключевого слова "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
0
266
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте следующее:

getSku: function () {
  return $.getJSON(Routing.generate(this.options.urls.get))
    .promise();
}

Когда вы вызываете getSku (), он возвращает объект обещания. Вам нужно дождаться разрешения обещания или не обработать результат следующим образом.

getSku().done((data) => {
   console.info(data);
}).fail(() => {
    console.info( "something went wrong" );
});

Чтобы узнать больше о обещаниях: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Да, я использовал успех вместо готово, но я буду использовать вашу версию :) Спасибо.

user2450639 13.07.2018 14:49

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