Bitte sagen Sie mir, wie man Javascript unten in Coffeescript schreibt.
setTimeout(function(){
something(param);
}, 1000);
Bitte sagen Sie mir, wie man Javascript unten in Coffeescript schreibt.
setTimeout(function(){
something(param);
}, 1000);
Ich denke, es ist eine nützliche Konvention, dass Callbacks als letztes Argument einer Funktion kommen. Dies ist beispielsweise bei der Node.js-API normalerweise der Fall. Also in diesem Sinne:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Zugegeben, dies fügt jedem den Overhead eines zusätzlichen Funktionsaufrufs hinzu setTimeout
du machst; Bei den heutigen JS-Interpretern ist der Leistungsnachteil jedoch unbedeutend, es sei denn, Sie tun dies tausende Male pro Sekunde. (Und was machst du überhaupt, um Tausende von Timeouts pro Sekunde einzustellen?)
Ein einfacherer Ansatz besteht natürlich darin, Ihren Rückruf einfach zu benennen, was sowieso zu besser lesbarem Code führt (jashkenas ist ein großer Fan dieser Redewendung):
callback = -> something param
setTimeout callback, 1000
Großartig, es sei denn, Sie benötigen verschachtelte Rückrufe
– Steven Pribilinskiy
24. Dezember 2014 um 13:12 Uhr
Nikolaus
setTimeout ( ->
something param
), 1000
Die Klammern sind optional, aber die Zeile mit einem Komma zu beginnen, erschien mir unordentlich.
Nehmen Sie die Eltern heraus und trinken Sie eine Tasse Kaffee ,~)
– Billy Mond
27. Juni 2012 um 1:23 Uhr
Kompiliert nicht mit den Klammern für mich. Ich musste sie entfernen, die Zeile mit einem Komma beginnen, und es funktioniert wie ein Zauber.
– Jeremy Thille
7. August 2014 um 13:29 Uhr
Mit Klammern können Sie dies auch in einer Zeile tun.
– Benutzer1544337
13. Mai 2015 um 20:47 Uhr
@JeremyThille beachten Sie, dass das Leerzeichen dazwischen liegt setTimeout
und der öffnende Elternteil ist wichtig. Das Leerzeichen dort bedeutet, dass die Klammern den Abschluss als ersten Parameter für setTimeout umgeben; wenn es direkt nach dem t wäre, würde coffescript erwarten, dass die Klammern beide Parameter einschließen.
– Jankins
2. September 2015 um 21:12 Uhr
Dirk Smaverson
setTimeout ->
something param
, 1000
Dies ist am besten, wenn Sie nur eine anonyme Funktion verwenden möchten.
– Alex K
12. Dezember 2013 um 21:39 Uhr
auch für eine benannte Funktion, setTimeout namedFunc, 5000
– Dirk Smaverson
13. Dezember 2013 um 1:26 Uhr
Beachten Sie, dass Leerzeichen wichtig sind. Der Anruf muss genau wie oben beabstandet sein. Wenn something param
ist auf der gleichen Linie wie setTimeout
es wird anders geparst.
– henrebotha
1. Februar 2017 um 10:18 Uhr
Maerik
Dies führt zu einer ungefähr äquivalenten Übersetzung (danke @Joel Mueller):
setTimeout (-> something param), 1000
Beachten Sie, dass dies keine exakte Übersetzung ist, da die anonyme Funktion das Ergebnis des Aufrufs zurückgibt something(param)
statt undefined, wie in Ihrem Snippet.
Ich finde dies die beste Methode, um dasselbe zu tun,
setTimeout (-> alert "hi"), 1000
andere Option:
setTimeout(
-> something param
1000
)
wie können wir .call(‘hello’) hinzufügen
– Atul
21. Dezember 2016 um 11:35 Uhr