ClojureScript, Async/Await 지원

발행: (2026년 5월 8일 PM 04:04 GMT+9)
2 분 소요

Source: Hacker News

우리는 ClojureScript의 새로운 릴리스를 발표하게 되어 기쁩니다. 기존 ClojureScript 사용자는 아래 릴리스 노트를 꼼꼼히 읽어 주세요.

비동기 함수

ClojureScript가 이제 ECMAScript 2016 을 타깃으로 삼게 되면서, 향상된 인터옵을 위한 새로운 영역을 신중히 선택할 수 있게 되었습니다. 이번 릴리스부터 함수에 ^:async 힌트를 달면 ClojureScript 컴파일러가 JavaScript async 함수를 생성합니다:

(refer-global :only '[Promise])

(defn ^:async foo [n]
  (let [x (await (Promise/resolve 10))
        y (let [y (await (Promise/resolve 20))]
            (inc y))
        ;; not async
        f (fn [] 20)]
    (+ n x y (f))))

테스트에서도 동일하게 동작합니다:

(deftest ^:async defn-test
  (try
    (let [v (await (foo 10))]
      (is (= 61 v)))
    (let [v (await (apply foo [10]))]
      (is (= 61 v)))
    (catch :default _ (is false))))

최근 Clojure 설문조사에서, 비동기 함수 지원이 JavaScript 인터옵을 위한 가장 원하는 ClojureScript 개선 사항으로 꼽혔습니다. 이번 개선으로 최신 브라우저 API와 인기 라이브러리와의 일반적인 상호작용에 추가 의존성을 도입할 필요가 없어졌습니다.

ClojureScript의 전체 수정 사항, 변경 내용 및 개선 사항 목록은 changelog를 참고하세요.

기여자

ClojureScript 1.12.145에 기여해 주신 모든 커뮤니티 멤버에게 감사드립니다.

Michiel Borkent

0 조회
Back to Blog

관련 글

더 보기 »