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?
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:
- Forma que sí funciona #2
(la que menos me gusta y veo redundancia con el condicional ternario de 'ninguno' repetido):
Un saludo y gracias de antemano.
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


0