Proszę, powiedz mi jak napisać javascript poniżej w coffeescript.
setTimeout(function(){
something(param);
}, 1000);
javascript
settimeout
coffeescript
tomodian
źródło
źródło
Odpowiedzi:
Myślę, że to przydatna konwencja dla wywołań zwrotnych, które są ostatnim argumentem funkcji. Zwykle dzieje się tak na przykład w przypadku interfejsu API Node.js. Mając to na uwadze:
To prawda, że narzuca to dodatkowe wywołanie funkcji w każdym
setTimeout
utworzeniu; ale w dzisiejszych interpretatorach JS wada wydajności jest nieznaczna, chyba że robisz to tysiące razy na sekundę. (A zresztą, co robisz, ustawiając tysiące limitów czasu na sekundę?)Oczywiście, prostszym podejściem jest po prostu nazwanie twojego wywołania zwrotnego, co i tak generuje bardziej czytelny kod (jashkenas jest wielkim fanem tego idiomu):
źródło
Nawiasy są opcjonalne, ale rozpoczęcie linii przecinkiem wydawało mi się niechlujne.
źródło
setTimeout
i paren otwierające są ważne. Spacja oznacza, że nawiasy otaczają zamknięcie jako pierwszy parametr setTimeout; jeśli było to bezpośrednio po t, wówczas coffescript oczekiwałby, że nawiasy zawierają oba parametry.źródło
something param
jest w tej samej linii cosetTimeout
, jest analizowany inaczej.Spowoduje to w przybliżeniu równoważne tłumaczenie (dzięki @Jel Mueller):
Pamiętaj, że nie jest to dokładne tłumaczenie, ponieważ funkcja anonimowa zwraca wynik wywołania
something(param)
zamiast niezdefiniowanego, jak w twoim fragmencie.źródło
setTimeout (() -> something param), 1000
Uważam, że to najlepsza metoda, aby zrobić to samo,
źródło
inna opcja:
źródło