Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

158
Vistas
Javascript elimina elementos de Array atómicamente

Soy nuevo en javascript y Vuex.

Tengo muchos Orders en una tabla (vinculados a state.runningOrders.data ), luego seleccioné estos pedidos y los cancelé (por lo tanto, active CANCEL_ONE_ORDER ). Cuando llegó la respuesta del servidor, simplemente eliminé el pedido con la identificación especificada de la matriz, por lo que la fila corroída desaparecerá de la tabla. No debe haber filas después de cancelar. Sin embargo, visualmente, siempre quedan algunas rows en la tabla.

Creo que funciona como múltiples subprocesos o coroutine. Entonces state.runningOrders.data necesita algún mecanismo de concurrencia.

 const actions = { async [CANCEL_ONE_ORDER](context, data) { const data_res = await RestClient.get("cancel_one_order", data.id +"/" + data.coin1+"/"+data.coin2); context.commit(CANCEL_ONE_ORDER_END, data_res.data); }, } const mutations = { [CANCEL_ONE_ORDER_END](state, res) { state.runningOrders.data = state.runningOrders.data.splice(state.runningOrders.data.findIndex(item => item.id === id), 1); }, }

¿Cómo eliminar el elemento de la matriz atómicamente (al mismo tiempo)?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que funciona como múltiples subprocesos o coroutine.

No, JavaScript ejecuta un solo subproceso por dominio (aproximadamente, por entorno global). Puede tener varios subprocesos, pero aparte de la memoria compartida explícita, no pueden acceder a las mismas estructuras de datos (en cambio, se comunican a través de mensajes). (La lógica en las funciones async puede superponerse, si la función A se detiene en await y la función B continúa).

splice devuelve una matriz de los elementos eliminados . Yopu está asignando eso de vuelta a su variable aquí:

 state.runningOrders.data = state.runningOrders.data.splice(state.runningOrders.data.findIndex(item => item.id === id), 1);

Eso hace lo contrario de lo que parece querer: actualiza data con una matriz de los elementos que eliminó de ellos, en lugar de los que desea conservar.

En su lugar, utilice filter :

 state.runningOrders.data = state.runningOrders.data.filter(item => item.id !== id);

Eso crea una nueva matriz a partir de los elementos que coinciden con la prueba de devolución de llamada (en este caso, los que no tienen una id coincidente).

about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro de entender completamente, pero parece que está tratando de eliminar una fila de una tabla (por lo tanto, probablemente un objeto de la base de datos) y está terminando con una fila en blanco.

A partir de esa descripción, me parece que no está eliminando el objeto, sino simplemente borrando los datos dentro del objeto. Luego te queda un objeto en blanco, que está creando tu fila vacía.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda