Почему я получаю Promise вместо стоимости? - PullRequest
2 голосов
/ 01 июля 2019

я думаю, что я не понимаю, почему я получаю обещание взамен? Мне нужно создать объект. Оба варианта возврата значения из обещания не работают.

Почему это так? Чего мне не хватает?

Решение: создать переменную внутри t (). Then (res => {const myVar = {...}})

// a.js
exports.t = (key, lang, props) => {
    return i18next.changeLanguage(lang).then(t => {
        return t(key, props);
    });
};

// b.js
import {t} from './a.js'
const myVar = {
  a: "a",
  b: "b",
  c: (()=>{
     switch (template) {
       case 'a':
         // Promise should return value here from t();
       default:
         break; 
     }
  })(),
  d: (async () => {
     switch (template) {
       case 'a':
         // Not working, returns Promise... Why?
         return await t('email.Registration Confirmation', lng);
       default:
         break; 
     }
  })(),
  e: (()=>{
     switch (template) {
       case 'a':
         // Not working, returns Promise... Why?
         return t('email.Registration Confirmation', lng).then(res => {
           return res;
         });
       default:
         break; 
     }
  })()
}

Возможно ли вообще, что JS ждет разрешения Обещания и затем завершает создание объекта?

1 Ответ

5 голосов
/ 01 июля 2019

async и await являются инструментами для управления обещаниями , позволяя использовать синтаксис, который кажется не асинхронным внутри функции async.

Следовательно, async функция будет всегда возвращать обещание (которое будет преобразовано в любое возвращаемое значение, если все обещания внутри него разрешены).


Вы ошибаетесь в функции послеcase 'Register':.Это возвращает обещание.У вас нет кода, чтобы проверить, что он возвращает.

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