Tengo un fragmento de código que recorre la matriz de usuarios y los filtra según una propiedad en particular. Después de eso, empujo las identificaciones de usuario a una matriz separada.
Ejemplo:
// User's props: // user: { id, name, subscriptions, isSubscribed: () => {} } const userIds = [] for (const user of users) { const isSubscribed = await user.isSubscribed(category) if (isSubscribed) { userIds.push(user.id) } } Me pregunto si un código secuencial de este tipo podría reescribirse en paralelo (con Promise.all por ejemplo).
Después de la llamada isSubscribed , encadene en user.id si están suscritos, de lo contrario no están undefined (o algún otro valor distinguible de una ID real) para que eso sea lo que resuelve una Promesa individual. Luego filtre la matriz solo para valores que sean ID.
const userIds = (await Promise.all( users.map( user => user.isSubscribed(category) .then(isSubscribed => isSubscribed ? user.id : undefined) ) )) .filter(userId => userId !== undefined);