2010-11-15 2 views

risposta

6

Purtroppo non credo che si può fare. Una volta iniziata l'esecuzione di una funzione, continuerà fino alla fine della funzione. Credo che ciò che si potrebbe desiderare di provare è creare due funzioni con un callback per la seconda funzione che è registrato con l'evento che si sta ascoltando per. Tuttavia, è difficile saperlo di sicuro visto che non hai pubblicato alcun codice.

+0

'stato molto difficile per me non scrivere codice fuorviante, ma mi avete capito bene. E grazie per la risposta. L'ho già implementato. –

+0

a me questo sembra il più grande difetto in javascript. Se funzioni potrebbero mettere in pausa, abbiamo potuto solo eseguire async IO chiamate senza bloccare e non entrare in callback inferno. – light24bulbs

+0

@ light24bulbs Indipendentemente dal linguaggio, se ti ritrovi a pensare "Vorrei poter mettere in pausa questa funzione", quello che stai dicendo è che vuoi due funzioni. –

2

Si dovrebbe avvolgere la seconda metà del codice in una funzione anonima e fissarlo come un gestore di eventi:

function myFunction() { 
    firstHalfOfMyFunction(); 
    eventEmitter.on('someEvent', function() { 
     secondHalfOfMyFunction(); 
    }); 
} 
2

È possibile utilizzare node-fibers che uso nella mia biblioteca Common Node.

+0

Sembra la risposta perfetta per me. Cercando le fibre del nodo in questo momento. –