Coffeescript의 매개 변수로 setTimeout을 작성하는 방법


208

coffeescript에서 아래에 자바 스크립트를 작성하는 방법을 알려주십시오.

setTimeout(function(){
    something(param);
}, 1000);

어떻게 .call ( 'hello')를 추가 할 수 있습니까?
Atul

답변:


214

콜백이 함수의 마지막 인수로 오는 것이 유용한 규칙이라고 생각합니다. 예를 들어 Node.js API의 경우가 일반적입니다. 그래서 그것을 염두에두고 :

delay = (ms, func) -> setTimeout func, ms

delay 1000, -> something param

물론, 이것은 모든 함수에 여분의 함수 호출의 오버 헤드를 추가합니다 setTimeout . 그러나 오늘날 JS 인터프리터에서는 초당 수천 번 수행하지 않는 한 성능 저하가 중요하지 않습니다. (그리고 어쨌든 초당 수천 개의 타임 아웃을 설정하고 있습니까?)

물론보다 간단한 접근 방식은 콜백 이름을 지정하는 것입니다. 어쨌든 더 읽기 쉬운 코드를 생성하는 경향이 있습니다 (jashkenas는이 관용구의 큰 팬입니다).

callback = -> something param
setTimeout callback, 1000

중첩 된 콜백이 필요하지 않은 경우
Steven Pribilinskiy

184
setTimeout ( ->
  something param
), 1000

괄호는 선택 사항이지만 쉼표로 줄을 시작하면 지저분 해 보입니다.


Parens를 꺼내고 커피 한 잔 마시세요 ~)
Billy Moon

4
나를 위해 괄호로 컴파일하지 않습니다. 나는 그것들을 제거하고 쉼표로 줄을 시작해야했고 그것은 매력처럼 작동합니다.
Jeremy Thille

괄호를 사용하면 한 줄로도 할 수 있습니다.

1
@JeremyThille은 사이 setTimeout와 간격 이 중요 하다는 점에 유의하십시오 . 공백은 괄호가 setTimeout의 첫 번째 매개 변수로 클로저를 둘러싸고 있음을 의미합니다. 그것이 t 바로 뒤에 있다면 coffescript는 괄호가 두 매개 변수를 묶을 것으로 기대합니다.
jankins

67
setTimeout -> 
  something param
, 1000

익명 함수 만 사용하려는 경우에 가장 좋습니다.
Alex K

또한 명명 된 함수의 경우 setTimeout namedFunc, 5000
Dirk Smaverson

공백이 중요합니다. 통화 간격은 위와 정확히 동일해야합니다. something param와 같은 줄에 있으면 setTimeout다르게 구문 분석됩니다.
henrebotha

46

이렇게하면 거의 비슷한 번역이됩니다 (@Joel Mueller 덕분에).

setTimeout (-> something param), 1000

익명 함수는 something(param)스 니펫에서와 같이 정의되지 않은 대신 호출 결과를 반환하기 때문에 정확한 번역이 아닙니다 .


1
너무 많은 파렌 / 세미콜론! 이것은 CoffeeScript이며, 초과 분량을 제거하는 것이 반점입니다. setTimeout (() -> something param), 1000
Joel Mueller

니콜라스 (Nicholas)는 빈 괄호도 선택적이라는 점을 지적합니다.
Joel Mueller


3

다른 옵션 :

setTimeout(
    -> something param
    1000
)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.