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

221
Views
¿Por qué no puedo hacer que mi función funcione sincrónicamente con Async Await?

Tengo una página html que muestra pedidos de comercio electrónico. Selecciono algunos de ellos con casillas de verificación y creo facturas usando una solicitud ajax al servidor php.

Ahora quiero crear estas facturas 3 por 3. Entonces, por ejemplo, si tengo 4 facturas, haré una solicitud ajax 2 veces y le mostraré el proceso al usuario. A continuación se muestra mi código, implementé async/await. Sin embargo, no funciona la sincronización. Ejecuto debajo del código para 4 facturas.

El resultado que espero debería estar en la consola de javascript:

 "Hello" "Bye" "Hello" "Bye"

Pero está imprimiendo en la consola:

 "(2)Hello" "(2)Bye"

Qué me estoy perdiendo ? Aquí está el código:

 function processInvoices(){ var arr_ordersToBeProcessed = []; let bulkCount = 3; let currCount = 0; let totalCount = jQuery("#div_orders").find('.invoiceCheckbox:checked').length; jQuery("#div_orders").find('.invoiceCheckbox').each(async function(i, obj) { let clickedOrder = $(obj).parent().parent().parent(); if($(obj)[0].checked == true){ let obj_singleOrder = {}; obj_singleOrder.orderNumber = clickedOrder.find('.div_orderNumber').text(); arr_ordersToBeProcessed.push(obj_singleOrder); currCount++; if(currCount%3==0 || currCount==totalCount){ console.log("hello"); const data = await jQuery.ajax({ type: "POST", url: "./_production/createInvoices.php", data: { orders: JSON.stringify(arr_ordersToBeProcessed) } }); arr_ordersToBeProcessed = []; console.log("bye"); if(currCount==totalCount){ alert("Completed!"); return; } } } }); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Estás malinterpretando lo que hace "esperar". No hace que su llamada sea sincrónica. Simplemente le permite escribir Código de manera diferente para que múltiples llamadas a funciones asíncronas seguidas no provoquen que su Código caiga en cascada en el infierno.

Si desea lograr una llamada http síncrona usando jquery, puede hacerlo agregando

 async: false

(Como se describe aquí ¿Cómo puedo hacer que jQuery realice una solicitud Ajax síncrona, en lugar de asíncrona? ).

Sin embargo, recomendaría enfáticamente no usar llamadas http sincrónicas, ya que hará que su sitio web no responda mientras se responde la llamada.

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!