Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!