Bucle síncrono Node.js

Soy nuevo en node.js y me pregunto si es posible iterar en un bucle sincrónicamente. Digamos que en un bucle for llamo una función de locking (lectura, escritura) y quiero que el for se ejecute de forma síncrona (espere a que termine la primera iteración, luego haga la segunda, …). Vi algunos tutoriales sobre el módulo async pero nadie cubrió este problema.

No deberías usar un bucle for para esto. El bucle for activará cada una de las funciones asíncronas simultáneamente, lo que obviamente no es lo que se desea. Debe crear su propio sistema para llamar a estos. Intenta algo como esto:

  1. Querrás que una matriz contenga todas las URL que quieres golpear
  2. Querrá crear una función que llame a la primera URL de la lista y espere la respuesta
  3. En la función de callback a esta llamada, una vez que se haya realizado todo el trabajo asíncrono, llame a la misma función para reiniciar el proceso hasta que esté fuera de la URL para golpear

Debería verse un poco así:

 var urls = new Array("google.com", "youtube.com", "stackoverflow.com"); function callFirstInArray() { var url = urls.shift(); //removes the first from the array, and stores in variable 'url' //do ajax work, and set callback function: $.ajax(/*do stuff with the url variable*/, function () { if (urls.length > 0) { //callback callFirstInArray(); }; }); }; 

Puede que el tuyo no funcione exactamente como lo describí aquí, pero debería usar un concepto similar.

Nota: Probablemente necesitará un scope de función adicional para proteger su matriz original de URL porque .shift() la matriz original

Mencionas que estás leyendo y escribiendo archivos, ¿estás usando fs.readFile y fs.writeFile ? Estos son métodos asíncronos, y necesitaría invocar uno tras otro en devoluciones de llamada.

Si desea utilizar un bucle, eche un vistazo a las versiones síncronas de los métodos fs.readFileSync y fs.writeFileSync .