Не удается разрешить обещание в объекте - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь получить файл и вернуть обещание в одном методе объекта, а затем использовать эти данные в другом методе того же объекта:

const translator = {
    currentLanguage: '',
    getText() {
        fetch('js/text.json')
            .then(res => res.json())
            .then(res => {
                console.log(res);
                return new Promise((resolve) => {
                    resolve(res);
                });
            });
    },
    fillText(lang) {
        this.getText()
            .then((res) => {
                console.log('in fill text: ');
                console.log(res);
            });
    },
};

translator.checkLanguage();
translator.fillText(translator.currentLanguage);

Это console.log JSON из text.json в методе getText правильно. Мой text.json является действительным файлом JSON. Я получил ошибку в консоли:

Uncaught TypeError: Невозможно прочитать свойство 'then' из неопределенного в Object.fillText (translationator.js: 35)

35 строка - .then((res) => { в методе fillText. Что я тут не так делаю?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы никогда не возвращали ничего из getText(). Изменить это:

fetch('js/text.json')

к этому:

return fetch('js/text.json')

Кроме того, использование конструктора Promise во втором then обратном вызове getText является избыточным, вы можете напрямую вернуть значение:

.then(res => {
  console.log(res);
  return res;
});

По умолчанию оно будет считаться разрешенным обещанием.

0 голосов
/ 28 апреля 2018

Вы забыли вернуть его

  getText() {
       return fetch('js/text.json')
            .then(res => res.json())
            .then(res => {
                console.log(res);
                return new Promise((resolve) => {
                    resolve(res);
                });
            });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...