Как использовать новую карту с async / await?

#javascript #nestjs

#javascript #nestjs

Вопрос:

У меня есть класс с внедрением службы i18n. Я хочу использовать его в новой карте. Теперь ^ У меня ошибка «Перегрузка не соответствует этому вызову».

   public async getContent() {

    const a = new Map([
      [
        'AA',
        new Map([
            'desc',
            [
              await this.i18n.t('Hello')
            ]
          ]
        ])
      ]
    ]);
 

PS:

Работает, когда вторая карта возвращает только одну пару

     const a = new Map([
      [
        'AA',
        new Map([
          ['desc', [await this.i18n.t('Hello'), await this.i18n.t('Hello')]],
        ])
      ]
    ]);
 

Но ^ когда я добавляю новую пару, это не работает

         new Map([
          ['111', 222]
          ['desc', [await this.i18n.t('Hello'), await this.i18n.t('Hello')]],
        ])
 

Комментарии:

1. Почему бы не дождаться результата раньше и не установить для него значение Map после выполнения? Я не уверен, что карту можно использовать таким образом.

2. У меня большой массив карт.

Ответ №1:

На самом деле это должно быть возможно, ваш синтаксис неверен (отсутствует [..] ). Рассмотрим этот простой пример:

 function fakeI18n(someStr) {
    return new Promise((resolve => {
        setTimeout(() => {
            resolve('translatedString')
        }, 200);
    }))
}

(async () => {

    const result = new Map([
        [
            'AA',
            new Map([
                ['111', 222],
                [
                    'desc',
                    [await fakeI18n('hello'), await fakeI18n('hello')]
                ]])
        ]
    ]);

    console.log(result)
})()
 

Это выведет:

 Map(1) {
  'AA' => Map(2) {
    '111' => 222,
    'desc' => [ 'translatedString', 'translatedString' ]
  }
}
 

Комментарии:

1. спасибо, не видел Map , чтобы это использовалось таким образом, сегодня узнаю что-то новое 🙂

2. Добавлен вопрос

3. Вам нужно указать каждую пару внутри [...] . Смотрите мое обновление.

4. @VladimirGolub: есть отзывы?