Esto podría ser un problema de acceso asincrónico.
El método que aumenta el contador “Me gusta” podría verse así …
userLikesPost (userId, post) {
post.incrementLikeCounter ();
post.addUserLike (userId);
}
Del mismo modo, un método para la acción diferente -cuando el usuario hace clic en la acción Me gusta para deshacer la acción- probablemente sería como …
- Opté por MNNIT IT en lugar de IIT BHU Mining Engineering. ¿He cometido un gran error?
- Soy una mujer de 21 años que es extremadamente peluda. Tengo el pelo grueso en todo el cuerpo, incluida la cara. ¿Cómo me deshago de ellos permanentemente de forma natural?
- Soy una mujer de 24 años. Creo que tengo mucha negatividad dentro y alrededor de mí. ¿Cómo me hago una persona feliz con una perspectiva positiva para la vida?
- ¿Estoy loco por pensar que Hillary Clinton será la mejor presidenta en la historia de los Estados Unidos?
- Acabo de comenzar la dieta cetogénica. Estoy perdiendo peso, pero una vez que alcanzo el peso objetivo, ¿hay alguna manera de volver a una dieta más normal que no sea muy alta en carbohidratos, por supuesto, pero tal vez un tazón de arroz al día sin recuperar el peso?
userUndoLike (userId, post) {
post.removeUserLike (userId);
post.decrementLikeCounter ();
}
Ahora que está fuera del camino, veamos la secuencia de llamadas a métodos que mostrarán la página …
likesCount = post.getLikesCount ();
…
… // algún código va aquí
…
if (likesCount> 0) {
displayString = post.getUserDisplayString ();
} más {
displayString = “Sé el primero en recibir me gusta en esta publicación”;
}
El problema podría haber sucedido cuando las siguientes acciones ocurren en esta secuencia particular.
- Al usuario-A le gusta la publicación. El recuento de Me gusta se actualiza en la base de datos con el valor “1”.
- El usuario B solicita que se represente la página.
- La variable likesCount está configurada correctamente en “1” según la base de datos.
- Cuando el control ejecuta los códigos en la sección marcada “// algún código va aquí”, al usuario-A no le gusta la publicación original. (Debido a que el renderizado de la página y los no me gusta del usuario se ven como acciones separadas e independientes, ambos pueden ejecutarse simultáneamente)
- El control de procesamiento ejecuta la
if( likesCount > 0)
y entra en la ruta TRUE e intenta recuperar la lista de usuarios a los que les ha gustado la publicación. Esto devuelve una cadena nula.
El error podría solucionarse esperando que el valor de displayString pueda ser nulo a veces.
Además, este es solo uno de los escenarios posibles, aunque raros, que me vino a la mente. También podría estar totalmente fuera de lugar.