Proszę mi powiedzieć, jak napisać javascript poniżej w coffeescript.jak napisać setTimeout z parametrami przez Coffeescript
setTimeout(function(){
something(param);
}, 1000);
Proszę mi powiedzieć, jak napisać javascript poniżej w coffeescript.jak napisać setTimeout z parametrami przez Coffeescript
setTimeout(function(){
something(param);
}, 1000);
Myślę, że jest to przydatna konwencja dla wywołania zwrotnego jako ostatniego argumentu funkcji. Zwykle dotyczy to na przykład interfejsu API Node.js. Tak więc biorąc to pod uwagę:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
prawda, to dodaje napowietrznej dodatkową funkcją wywołania każdej setTimeout
można zrobić; ale w dzisiejszych interpreterach JS wada wydajności jest znikoma, chyba że robisz to tysiące razy na sekundę. (A poza tym, co robisz ustawiając setki timeoutów na sekundę?)
Oczywiście prostszym rozwiązaniem jest po prostu nadanie swojemu callbackowi, co zwykle prowadzi do uzyskania bardziej czytelnego kodu (jashkenas jest wielkim fanem tego idiom):
callback = -> something param
setTimeout callback, 1000
Świetne, chyba że potrzebujesz zagnieżdżonych połączeń zwrotnych. –
Dobra odpowiedź !!!! –
Spowoduje to z grubsza odpowiednik tłumaczeniu (dzięki @Joel Mueller):
setTimeout (-> something param), 1000
zauważyć, że nie jest to dokładne tłumaczenie, ponieważ funkcja anonimowa zwraca wynik wywołania something(param)
zamiast niezdefiniowane, jak w twoim urywku.
Zbyt wiele parens/średników! To jest CoffeeScript, pozbycie się nadmiaru parens jest o połowę mniejsze. 'setTimeout (() -> coś param), 1000' –
@Joel Mueller: dzięki, zaktualizowałem swoją odpowiedź. – maerics
Nicholas podkreśla, że puste pareny są opcjonalne. –
setTimeout ->
something param
, 1000
To jest najlepsze, jeśli chcesz po prostu użyć anonimowej funkcji. –
także dla nazwanej funkcji, setTimeout namedFunc, 5000 –
Należy zwrócić uwagę, że białe spacje są ważne. Połączenie musi być ustawione dokładnie tak, jak powyżej. Jeśli 'coś param' jest w tej samej linii co' setTimeout', to jest przetwarzane w inny sposób. – henrebotha
inna opcja:
setTimeout(
-> something param
1000
)
znajdę to najlepszy sposób, aby zrobić to samo,
setTimeout (-> alert "hi"), 1000
Podoba mi się ten wbudowany skrypt –
Podniosłem to pytanie, nie to, że dokładnie to, czego szukałem, ale odpowiedzi prowadzą mnie we właściwym kierunku. – MikeScott8
To jest świetne pytanie; to jedna z niewielu osób, które pomagają mi odkryć ograniczenia Coffeescript (tak jak jest teraz). – thure
jak możemy dodać .call ("cześć") do tego – Atul