Dies funktioniert:Kann nicht Funktion setTimeout Argument Array in node.js (Typoskript) zu passieren scheint
function test(msg:string){
console.log(msg);
}
setTimeout(test, 1000, ["Hi!"];
..., dass es auszudrucken "Hallo!" nach einer Sekunde auf die Konsole.
Dies funktioniert auch:
function test(){
console.log("Hi!");
}
function callTest(next:() => void){
next();
}
callTest(test);
, dass es auch ausdruckt "Hallo!" zur Konsole.
Folgendes führt zum Fehler "TypeError: next ist keine Funktion". Warum?
function test(){
console.log("Hi!");
}
function callTest(next:() => void){
next();
}
setTimeout(callTest, 1000, [test]);
Es sieht sicher wie eine Funktion für mich aus! Wenn das erste Code-Snippet funktioniert, zeigt es mir, dass ich generell das Recht habe, setTimeout zu verwenden und Parameter an den Callback zu senden, und das zweite Code-Snippet zeigt, dass dies die richtige Form ist, um eine als Parameter übergebene Funktion aufzurufen - why isn ' t meine Verwendung von setTimeout im 3. Code-Snippet funktioniert?
Ah - so übergeben Sie nicht eine Reihe von Parametern, Sie einfach nur auflisten? Wenn callTest 2 params hätte, wäre das so: 'setTimeout (callTest, 1000, param1, param2)'? Warum habe ich in meinem ersten Beispiel, in dem ich ein Array als Parameter übergeben habe, wo es eine Zeichenfolge erwartet, keinen TypeError bekommen? (Sie sind völlig richtig und ich werde dies als die richtige Antwort markieren, aber ich will es nur vollständig verstehen.) – WillyC
Die 'setTimeout', die Sie in Ihrem Kommentar zeigen, ist korrekt. Ihr erstes Beispiel hatte einen Fehler. In der Funktion 'callTest' rufen Sie 'test()' direkt auf, anstatt 'next()' aufzurufen. – Louis
Das war nur ein Buchungsfehler - ich habe es in der Frage behoben. Deine Antwort hat es für mich getan (ich warte nur darauf, dass die Zeit vergeht, um als abgeschlossen zu markieren). Ich war neugierig, warum in der ersten Code-Snippet gab es keinen Typ Fehler, aber ich denke, console.log ist in Ordnung mit einem Array von einer einzigen Zeichenfolge und die Funktion Unterschrift hätte keinen TypeError geworfen, so dass es Sinn macht . – WillyC