์ ์: https://github.com/tc39/ecmascript-asyncawait
2015๋ 7์ 30์ผ 2๋จ๊ณ๋ก ์งํ https://github.com/tc39/ecma262
gh-2601์ ๋ฐ๋ผ ๋ค๋ฆ
์ด์ ๋
ธ๋ 8์ด ํ์ฑํ๋์์ต๋๋ค. Async/Await๊ฐ ๊ณต์์ ์ผ๋ก ์ง์๋ฉ๋๋ค.
jsHint์์ ๊ณง ์ฌ์ฉํ ์ ์์ต๋๊น?
๊ฐ์ฌ ํด์,
๋๋ ์ด๊ฒ์ ์ฌ๊ธฐ์ ๋จ๊ธธ ๊ฒ์ด๋ค: http://eslint.org/
์ฌ๊ธฐ์ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค: https://github.com/eslint/eslint#what -about-experimental-features ๐
๋น์ ์ ๋ฐฉ๊ธ jshint์ ๋ํ ๊ด์ฌ์ ์์์ต๋๋ค. ์ฃ์กํฉ๋๋ค, ์ฒ์ฒํ.
Node.js๋ async/await๋ฅผ ์ง์ํฉ๋๋ค. ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ๋ async/await๋ฅผ ์ง์ํฉ๋๋ค. JSHint๋ ์ง์ํ์ง ์์ต๋๋ค. ์ด ์ฃผ์ ๋ 2์ธ์ ๋๋ค.
JSHint ๊ฐ์ฌํฉ๋๋ค. ์ง์๋๋ ๋์ ์ข์์ต๋๋ค.
ESLint๋ก ์ ํํ์ต๋๋ค.
์๋ ํ์ธ์ ํ,
๋น๋๊ธฐ ์ฌ์์ด 4๋จ๊ณ์ ๋๋ฌํ์ต๋๋ค. ์ธ์ ์ง์์ ๊ธฐ๋ํ ์ ์์ต๋๊น?
RIP Jshint
๋์์ด ๋๋ ๋๊ธ์ด ์๋๋๋ค. ๋ถ์ ์ ์ธ ๊ฒ์ด ์๋๋ผ ํจ์น๋ฅผ ์ ์ถํ์ญ์์ค.
๋๋ jshint์ ํฌ์ด์์ง๋ง ์ง๊ธ์ eslint๋ก ์ฎ๊ธฐ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ECMA์ ์๋ก์ด ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ์ ํธ๋์คํ์ผ๋ฌ ์์ฑ์ ๋ชฉํ๋ ์ฌ๋๋ค์ด JavaScript์ ์ต์ ๊ธฐ๋ฅ์ ์กฐ๊ธฐ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. Async/await๋ ํ์ฌ ํ ๋ฌ์ด ๋๋ ๊ธฐ๊ฐ ๋์ 4๋จ๊ณ์ ์์์ง๋ง(๋ ธ๋ ๋ฐ ๋ง์ ์ฃผ๋ฅ ๋ธ๋ผ์ฐ์ ์ ๋ ์ค๋ ์ ์ฉ๋จ) jshint๋ ์์ง ์ง์์ ์ถ๊ฐํ์ง ์์์ต๋๋ค.
๋งค์ผ jshint๋ฅผ ์ฌ์ฉํ๋๋ฐ jslint๋ณด๋ค ์ ์ฐํ ๊ฒ์ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ์ต์ ES ๊ธฐ๋ฅ๊ณผ ์คํ ๊ธฐ๋ฅ์ ์ง์ํ๋ ๋ณด๋ค ๊ฐ๋ ฅํ๊ณ ์ต์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๋ชจ๋ ์ ์ผ ์ข๋ค.
jshint๋ก ๊ฒ์ฆ๋ ์์ญ๋ง ๊ฐ์ ์ฝ๋ ๋ผ์ธ์ด ์์ต๋๋ค. ๋ชจ๋ ์ฝ๋๋ Promises๋ฅผ ์ฒ ์ ํ ์ฌ์ฉํฉ๋๋ค. 6๊ฐ์ ์ ์ ์ฐ๋ฆฌ๋ ์๋ฒ ์ธก ์ฝ๋๋ฅผ ๋จ์ํํ๊ธฐ ์ํด async/await๋ฅผ ๋์
ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค(promise๋ ํจ์๊ฐ ์ฌ์ํ์ง ์์ ๋ ์ฝ๋ฐฑ๊ณผ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. await๋ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๋ฆฌ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ฝ๊ณ ์ ์งํ๊ธฐ ์ฌ์ด ์ฝ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค).
๋ฌธ์ ๋ OMG, jshint์์ต๋๋ค. eslint๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฒ์ ์ฌ์ด ์ผ์ด ์๋๋ฉฐ JSHINT๋ก ์ฝ๊ฐ์ ์๊ฐ์ ๋ณด๋ด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ง๋ 3๋ ๋์ ์ข์ ์์ ๊ณผ ์ค๋ฅ ์ฝ๋๋ฅผ ์ ์ฅํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
๋ค์ ๋ง์ด๋ ๋ฆด๋ฆฌ์ค์ ๋ํ ์ง์์ ์ํด ์ด์ฌํ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ํผ๋์ ํผํ๊ธฐ ์ํด ๋ฌธ์ ์ ๋ชฉ์์ "์คํ์ "์ด๋ผ๋ ๋จ์ด๋ฅผ ์ ๊ฑฐํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ํด +1!
์ฐ๋ฆฌ๋ @jsfiddle์ ํ๋ฅญํ ๋๊ตฌ์ ๋ํ ๊ฐ์ฌ๋ฅผ JSHint์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋!
async
๋ฐ await
๋ํด ๋ถํํ๋ ๋ฆฐํฐ์ ๋ํ ๋ช ๊ฐ์ง ๋ถ๋ง ์ฌํญ์ด ์์ต๋๋ค.
@jugglinmike ๋ ์ ๋๊ธ์ด 3๊ฐ์ ์ ์ ์์ฑ ๊ฐ ๋์?
async/await ์ง์์ ํ์ฌ ์ํ๋ ๋ฌด์์ ๋๊น?
์ข์ ์ง๋ฌธ, @colxi ๋ฐ @oskarkrawczyk. ๋๋ ์ง๋ ๋ช ๋ฌ ๋์ ๋น๋๊ธฐ ๊ธฐ๋ฅ์ ๋ํ ์ง์ ์์ ์ ํด์์ง๋ง ์ ์ฅ์์ ์ํ์์ ์ ํ ๋ช ํํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ๋ฅผ ํ๋ก์ฐํ๋ ๋ชจ๋ ์ฌ๋์ด ์ฐ๋ฆฌ๊ฐ ์ด๋์ ์๋์ง ์ดํดํ ์ ์๋๋ก ์งํ ์ค์ธ ํ ๋ฆฌํ์คํธ๋ฅผ ์ด์์ต๋๋ค. gh-3272
async/await ๊ธฐ๋ฅ์ ํ์ด์ ๋น๋๋ค. ์ด ๋ฉ์ง ํ๋ฌ๊ทธ์ธ์ ํ์ ๊ธฐ๋ฅ์ ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ต๋ช ํจ์์ ์ฌ์ฉํ ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Expected '(' and instead saw '{'.
+3๋ ์ด ๋์์ต๋๋ค!!
์ถฉ๋ถํ ๊ธฐ๋ค๋ ธ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ JSHint. ์ข์ ์๊ฐ์ด์์ต๋๋ค.
async/await
๋ ์ด์ 2.10.1
๋ฒ์ ์์ ์ง์๋ฉ๋๋ค. .jshintrc
๋ฅผ ์ฌ์ฉํ๋๋ก "esversion": 9
.jshintrc
๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ
CHANGELOG.md๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
@nodesocket esversion: 8
ํ๋๊ทธ๋ async
๋ฐ await
๋ํด ๋ถ๋ช
ํ ์ถฉ๋ถํฉ๋๋ค(๊ทธ๋ฌ๋ ๋ณ๊ฒฝ ๋ก๊ทธ์ ๋ฐ๋ฅด๋ฉด esversion: 9
ํ๋๊ทธ๊ฐ _์์ต๋๋ค).
์ด๋ค ๊ฒฝ์ฐ์๋; ๋ง์นจ๋ด ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ ์ฌ๋๋ค์๊ฒ ๊ฐ์ฌํฉ๋๋ค.
@nodesocket ์ด ์ณ์์ต๋๋ค-๋น๋๊ธฐ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ JSHint์์ o 2.10.0์ผ๋ก ํ์ฑํํ ์ ์์ต๋๋ค. ํด๊ฒฐ๋ ๋๋ก ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด์ ๋ ธ๋ 8์ด ํ์ฑํ๋์์ต๋๋ค. Async/Await๊ฐ ๊ณต์์ ์ผ๋ก ์ง์๋ฉ๋๋ค.
jsHint์์ ๊ณง ์ฌ์ฉํ ์ ์์ต๋๊น?
๊ฐ์ฌ ํด์,