jak napisać setTimeout z params by Coffeescript
Proszę mi powiedzieć, jak pisać javascript poniżej w coffeescript.
setTimeout(function(){
something(param);
}, 1000);
6 answers
Myślę, że jest to użyteczna konwencja wywołań zwrotnych jako ostatni argument funkcji. Zwykle tak jest w przypadku węzła.na przykład js API. Więc mając to na uwadze:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Przyznaję, to dodaje narzut dodatkowego wywołania funkcji do każdego setTimeout
, który wykonasz; ale w dzisiejszych interpreterach js wada wydajności jest znikoma, chyba że robisz to tysiące razy na sekundę. (A co ty w ogóle robisz ustawiając tysiące timeoutów na sekundę?)
Z oczywiście, prostszym podejściem jest po prostu nazwij swoje wywołanie zwrotne, które ma tendencję do tworzenia bardziej czytelnego kodu i tak (jashkenas jest wielkim fanem tego idiomu): {]}
callback = -> something param
setTimeout callback, 1000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-23 20:22:21
setTimeout ( ->
something param
), 1000
Nawiasy są opcjonalne, ale rozpoczynanie linii przecinkiem wydawało mi się niechlujne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-12 04:40:07
setTimeout ->
something param
, 1000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-13 01:27:28
Spowoduje to w przybliżeniu równoważne tłumaczenie (dzięki @Joel Mueller):
setTimeout (-> something param), 1000
Zauważ, że nie jest to dokładne tłumaczenie, ponieważ funkcja anonymous zwraca wynik wywołania something(param)
zamiast undefined, jak w Twoim urywku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-23 19:44:49
Uważam, że jest to najlepsza metoda, aby zrobić to samo,
setTimeout (-> alert "hi"), 1000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-09 04:34:10
Inna opcja:
setTimeout(
-> something param
1000
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 14:05:13