Recibo varios pares clave-valor de un emisor de eventos que deben compilarse en un objeto. La parte complicada es que algunos de los valores-clave necesarios tienen un retraso en el tiempo. Estoy usando una declaración de cambio para escribir los valores en variables temporales.
switch ( data.keys case "key1_1": tempvalue1_1 = data.value; break; case "key1-2": tempvalue1_2 = data.value; break; case "key1-3": tempvalue1_3 = data.value; break; case "key1-4": tempvalue1_4 = data.value; break;tan pronto como se reciben los datos, verifico usando una declaración if si los datos son plausibles (no nulos) y los inserto en el objeto que necesito
if ( tempvalue1_1 && tempvalue1_2 && tempvalue1_3 && tempvalue1_4 ) { let object = { key1-1: "key1-1", key1-1_value: tempvalue1_1, key1-2: "key1-2", key1-2_value: tempvalue1_2, key1-3: "key1-3", key1-3_value: tempvalue1_3, key1-4: "key1-4", key1-4_value: tempvalue1_4, }; }Tan pronto como se compila el objeto, lo envío a elasticsearch y luego restablezco los valores-clave a nulos.
Como dije antes, mi problema es que algunos valores clave tienen un poco de retraso. Lo que significa que el par clave-valor 1-1 y 1-2 siempre cambia, pero el par clave-valor 1-3 y 1-4 no siempre cambia tan pronto como cambia la clave-valor 1-1 y 1-2 y se emitirá hasta 500ms tras el 1-1 y el 1-2. traté de usar
setTimeout(function(){ },500)dentro de mi declaración if mencionada anteriormente, pero esto solo hace que la declaración if sea verdadera varias veces y crea el objeto con datos incompletos.
¿Alguna sugerencia?