2016-08-08 24 views
-2

Bitte helfen Sie mir ausführen, um die setTimeout im folgenden CodeUm die Funktionen nach dem Abschluss der bisherigen Funktionen in Javascript

var fileArray=ReadDir.readFilesFromDirectory(full_path); 
setTimeout(function(){ 
setTimeout(function(){fileArray.forEach(function (val,index,array) { 
     /* time taken statements 
     Define arg1*/ 
     ` setTimeout(function() { 
     /* time taken statements 
     Define arg2,arg3*/ 
     ConnectToFirebase.linkToFirebase(arg1,arg2,arg3); 
     setTimeout(function() { 
      process.exit(0);},10000) ; 
     },500);//function 4 
    });//function 3 
    },500);//function 2 
},500);//function 1 

I Ausführung nach Abschluss der bisherigen Funktionen() dh die folgende Funktion entfernen möchten eins nach dem anderen wie es

+2

Siehe Event-Handler und Rückrufe –

+0

@Jonasw Ich habe versucht, Event-Handler in dem folgenden Beispiel zu implementieren, aber es funktioniert nicht die Zeit nehmen, Funktion (Aussagen) in Anspruch nehmen, bevor Ereignis Anruf Ausführung 'var events = require ('Ereignisse'); eventEmitter = new events.EventEmitter(); var a = Funktion() {var c = null; setTimeout (function() { console.log ("LANGE FUNKTION"); c = b; }, 5000); eventEmitter.emit (c); console.log (c); } eventEmitter.on ("a", a); var b = Funktion() { console.log ('Dies ist Funktion b'); eventEmitter.emit ('a'); } eventEmitter.on ("b", b); eventEmitter.emit ('b'); ' –

+0

Debuggen Sie es. Was ist falsch gelaufen? –

Antwort

0

wenn Sie so tun etw für die Ausführung Problem, wenn vorherige Funktion mehr Zeit benötigen, schafft:

AsyncCall(); 
console.log("t"); 

Der Browser wartet nicht, bis AsyncEvent abgeschlossen ist. Er macht weiter und behandelt die Funktion in einer anderen Routine.

Da Sie nicht warten können, bis ein Ereignis abgeschlossen ist, wurden Callbacks und Event-Handler erfunden. Das ist, wie ein Rückruf wie folgt aussieht:

function async(callback){ 
//function executes 
callback(); 
//the passed code is executed 
} 

Um die Funktion mit einem Rückruf zu führen, einfach tun:

async(function(){//code ran later}); 

Ereignis Hanlers ist fast gleich:

window.onload=function(){} 

Weil im nicht Mit node.js kann ich Ihnen nicht sagen, wie Ihre asynchronen Ereignisse funktionieren. Tauchen Sie ein in die Dokumentation und finde es heraus :)