Angular - async/await dentro de .filter()

 
Vista:

async/await dentro de .filter()

Publicado por Pedro (1 intervención) el 17/06/2021 02:02:22
Es para una función sencilla que básicamente filtra o no un array según una condición a través del parámetro tagId.

Mi pregunta: ¿Por qué no funciona async/await dentro de filter?

1
2
3
4
5
6
7
this.activities = (tagId !== 'ninguno')
      ? this.allActivities.filter(
          async element => element.tags.includes(
            (await this.tagsService.getData(tagId)).data().name.ES
          )
        )
      : this.allActivities;


Estas otras dos formas sí funcionan por no tener que usar async/await dentro de .filter() pero tengo gran interés en usar la primera forma. Seguro que es alguna tontería que se me escapa. (Estoy empezando)


- Forma que sí funciona #1:

1
2
3
4
5
6
7
8
if (tagId === 'ninguno') {
      this.activities = this.allActivities;
    } else {
      var tagName = (await this.tagsService.getData(tagId)).data().name.ES;
      this.activities = this.allActivities.filter(
        element => element.tags.includes(tagName)
      );
    }

- Forma que sí funciona #2
(la que menos me gusta y veo redundancia con el condicional ternario de 'ninguno' repetido):

1
2
3
4
5
6
7
this.tagName = (tagId !== 'ninguno')
      ? (await this.tagsService.getData(tagId)).data().name.ES
      : null;
 
    this.activities = (tagId !== 'ninguno')
      ? this.allActivities.filter(element => element.tags.includes(this.tagName))
      : this.allActivities;

Un saludo y gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder