Tengo una entrada de texto cuyo valor debe ser único, para asegurarme de que hago una llamada a la API cada vez que la entrada cambia su valor, dando una respuesta instantánea al usuario sobre si la entrada es válida o no.
Hay 2 problemas con este enfoque:
1- Demasiadas llamadas API innecesarias.
2- Cuando el usuario escribe lo suficientemente rápido, existe la posibilidad de que las respuestas salgan desordenadas.
Por ejemplo: si escribe "foo bar", habrá 7 solicitudes de búsqueda de: "f","fo","foo","foo","foo b","foo ba","foo bar" exactamente en ese ordenar. Digamos si "foo ba" es válido pero "foo bar" NO lo es. Si escribir es relativamente lento, estará bien, pero si es lo suficientemente rápido puede suceder que la respuesta de "foo ba" se devuelva en último lugar, lo que significa que el estado será "válido" cuando no lo sea.
La posible solución será que cualquier llamada de API cancele todas las llamadas anteriores en curso.
Creo que su corazonada de que hacer una llamada para que cada personaje esté equivocado es correcta. Realmente debería verificar en la publicación que la entrada es única y, si no, decirle al usuario. Si desea obtener más comentarios en tiempo real, puede enviar todas las entradas actuales de su base de datos una vez en la carga de la página y recorrerlas en el front-end (todavía no es una gran solución)
si estás casado con tu idea, podrías resolverlo de la siguiente manera:
Genere una identificación única para cada llamada e inclúyala en su solicitud.
cuando haga la llamada, guarde esa identificación en una variable, algo así como lastCall. Cada llamada que realice actualizará la identificación de la última llamada. Luego, cuando comience a recibir respuestas, solo necesita reaccionar a las respuestas que contienen la misma identificación que está en lastCall.
Nuevamente, recomendaría cambiar su enfoque, pero esta solución ayudará a solucionar el problema de las llamadas que no están sincronizadas. Sin embargo, seguirás enviando spam a tu backend.