Estoy ejecutando una función de mapa en una matriz de objetos llamada channelList, estoy verificando dos condiciones para cada objeto en la matriz, si se cumple una condición, simplemente devuelvo un componente React, esta parte funciona bien. El problema es el otra condición if, en la que estoy llamando a una promesa, y después de obtener el resultado de esta promesa, devuelvo el elemento React. Por lo tanto, la función de mapa no espera el resultado de la promesa en la segunda condición if, continúa con es una operación síncrona para el siguiente objeto, obtengo el resultado deseado de la otra condición pero no de la condición de operación asíncrona, entonces, ¿qué puedo hacer para que la función de mapa se detenga para el resultado de la promesa para poder obtener el deseado? resultado.
{channelList.map((channel) => { console.log(channel); const channelMetaData = JSON.parse(channel?.Metadata); console.log(channelMetaData); //If this condition is satisfied,go for an async operation,and then return. if(channelMetaData?.isOneToOne){ listChannelMemberships(channel.ChannelArn,userId).then(async (res)=>{ if(res[0].Member.Name==userData.username){ console.log("I am this user",res[0].Member.Name); var otherPerson = res[1].Member.Name; }else if(res[1].Member.Name==userData.username){ console.log("I am this user",res[1].Member.Name); var otherPerson = res[0].Member.Name; } console.log(otherPerson); return <ChannelItem key={channel.ChannelArn} name={channel.Name} actions={loadUserActions(userPermission.role, channel)} isSelected={channel.ChannelArn === activeChannel.ChannelArn} onClick={e => { e.stopPropagation(); channelIdChangeHandler(channel.ChannelArn); }} unread={unreadChannels.includes(channel.ChannelArn)} unreadBadgeLabel="New" > </ChannelItem> }) } //Or else,go for this condition. else{ return <ChannelItem key={channel.ChannelArn} name={channel.Name} actions={loadUserActions(userPermission.role, channel)} isSelected={channel.ChannelArn === activeChannel.ChannelArn} onClick={e => { e.stopPropagation(); channelIdChangeHandler(channel.ChannelArn); }} unread={unreadChannels.includes(channel.ChannelArn)} unreadBadgeLabel="New" > </ChannelItem> }