Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

165
Visualizações
¿Ejecutar AJAX en función de los tiempos almacenados en dos matrices diferentes?

Esta es una de esas situaciones en las que es un poco complicado explicar el problema, pero haré todo lo posible para explicarlo para poder obtener ayuda aquí.

Básicamente, tengo un proyecto que necesito para permitir que los usuarios inicien sesión/cierren sesión, incluso si no tienen conexión a Internet.

Cada vez que inician sesión/cierran sesión mientras están desconectados, almaceno 2 matrices y las empujo para poder iniciar/cerrar sesión según la hora en que iniciaron/cerraron sesión.

Las matrices se ven así:

 var logins = [{"id":1,"dateAdded":"2021-10-29T18:27:35.754Z"}, {"id":2,"dateAdded":"2021-10-29T18:28:35.754Z"}, {"id":3,"dateAdded":"2021-10-30T18:28:35.754Z"}]; var logouts = [{"id":1,"dateAdded":"2021-10-29T18:27:50.754Z"}, {"id":2,"dateAdded":"2021-10-29T19:28:35.754Z"}];

Para explicar las matrices, la identificación es la id de la cuenta en la que iniciaron/cerraron sesión . la dateAdded es básicamente la fecha y hora en que iniciaron/cerraron sesión .

Ahora, el problema: cuando ejecuto mi código AJAX en el siguiente código/moda, funciona bien PERO todo se ejecuta al mismo tiempo, lo que inunda el sistema de inicio/cierre de sesión y, por lo tanto, no iniciará ni cerrará la sesión del cuenta(s).

 for(let dataSings of logins){ //do my ajax stuff here } for(let dataSingo of logouts){ //do my ajax stuff here }

Lo que debo hacer es encontrar una buena solución para buscar en estas matrices, y luego iniciar sesión y luego buscar en las matrices el cierre de sesión con la misma identificación y cerrar sesión nuevamente y así sucesivamente. ..

y todo esto se ha basado en el tiempo que está almacenado en el Array ( dateAdded) .

Espero haber explicado esto lo suficientemente bien como para arrojar algo de luz al respecto.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para responder a su pregunta (aunque creo que el enfoque es defectuoso)

Debe tener una matriz que contenga todas las acciones y para cada acción almacenar la información de qué tipo es.

Y para esperar el envío de cada solicitud, puede usar await y async .

 let actions = [{ "type": "login", "id": 1, "dateAdded": "2021-10-29T18:27:35.754Z" }, { "type": "login", "id": 2, "dateAdded": "2021-10-29T18:28:35.754Z" }, { "type": "login", "id": 3, "dateAdded": "2021-10-30T18:28:35.754Z" }, { "type": "logout", "id": 1, "dateAdded": "2021-10-29T18:27:50.754Z" }, { "type": "logout", "id": 2, "dateAdded": "2021-10-29T19:28:35.754Z" } ] async function run() { // sort the array actions.sort(function(a, b) { return new Date(b.dateAdded) - new Date(a.dateAdded); }); for (let action of actions) { if (action.type === 'login') { await fetch('/login', { method: "POST" // body: data }) } else if (action.type === 'logout') { await fetch('/logout', { method: "POST" // body: data }) } } } run();

Si realmente desea tener dos matrices, puede fusionarlas y, antes de eso, agregar el type a los elementos. (tenga en cuenta que estos elementos en el inicio de login y el cierre de logout son los mismos que en merged )

 var logins = [{ "id": 1, "dateAdded": "2021-10-29T18:27:35.754Z" }, { "id": 2, "dateAdded": "2021-10-29T18:28:35.754Z" }, { "id": 3, "dateAdded": "2021-10-30T18:28:35.754Z" }]; var logouts = [{ "id": 1, "dateAdded": "2021-10-29T18:27:50.754Z" }, { "id": 2, "dateAdded": "2021-10-29T19:28:35.754Z" }]; let merged = [ ...logins.map(item => { item.type = 'login' return item }), ...logouts.map(item => { item.type = 'logout' return item }) ] console.dir(merged)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda