JavaScript(ES2018)에서 매년 256일째 실시#프로그래머의 날
원래의 개발 언어는 불분명하지만, 차량 단말기로도 이동할 수 있는 자바스크립트를 이식해 보자.
async/await와 비동기 망원경을 사용해 보십시오.
while (everyYear) {
if (today().dayNumber == 256) {
celebrate("Programmers' Day");
}
}
https://twitter.com/TRIAD_Japan/status/1172412070769258496.하면, 만약, 만약...
256일째 "프로그램머즈데이"축하회가 계속 이어질 것 같아요.
어디에 무게가 있어야 합니까?
그리고 256일 이외의 일을 감안하면,
while (everyYear)
의 부분에 가중치를 넣는다하루에 한 번만 while 문장을 실행하는 것이 타당하다는 설명이다.
매일 처리
everyYear
이 변수명?이용한 원래의 명명 규칙은수수께끼지만 무슨 의도가 있다고 생각해서 직접 이식하기로 했어요.
1.async/await 구현 시
JavaScript 마이그레이션에서 최초
while (everyYear)
는 기호입니다.변수가 아닌 함수 호출로
everyYear
을 변경할 수 있다면, async/await에서 실행할 수 있습니다.원래
while (everyYear)
는while (await everyYear())
입니다.const sleep = s => new Promise(r => setTimeout(r, s));
const celebrate = m => console.log(m);
const today = () => ({dayNumber: 256}); // TODO
const everyYear = async () => await sleep(1000) || true;
(async () => {
// ここから
while (await everyYear()) {
if (today().dayNumber == 256) {
celebrate("Programmers' Day");
}
}
})();
1년을 기다리는 것이 힘들기 때문에 이곳에서 시연을 위해 1초마다'프로그래머데이'를 축하합니다.Top-level await이 실현되면
(async () => {
과})();
를 절약할 수 있을 것이다.실행 결과: (node v10 및 Chrome77을 통해 동작 확인됨)
Programmers' Day
Programmers' Day
Programmers' Day
단, while (await everyYear()) {
부분에 관하여동사await의 목적어는 everyYear로 읽을 수 있기 때문에 영어로는 읽기 어렵다.
읽기 어려운 코드는 안전한 적이기 때문에 그다지 좋지 않다.
2. 비동기식 소데이터로 구현 시
또는 비동기 생성기
async function*
라는 주문과 for-await-of
문법을 사용한다면everyYear
를 비동기 프로그램의 변수로 사용할 수 있기 때문에 함수 호출의 괄호()
를 제거할 수 있습니다.원래
while (everyYear)
는for await (safety of everyYear)
처럼.const sleep = s => new Promise(r => setTimeout(r, s));
const celebrate = m => console.log(m);
const today = () => ({dayNumber: 256}); // TODO
const everyYear = (async function* () {
while (true) yield await sleep(1000) || true;
})();
let safety;
(async () => {
// ここから
for await (safety of everyYear) {
if (today().dayNumber == 256) {
celebrate("Programmers' Day");
}
}
})();
for-of
문법에서 받아들여야 할 변수가 있기 때문에 우리는 safety
를 시도했다.while (true) yield await sleep(1000) || true;
의 일행이 편해요.비동기 생성기
async function*
는 아직arrowfunction으로 쓸 수 없는 것 같아 아쉽다.만약
for await safety of everyDay
매일의 안전을 찾기 위해 활동하는256일째만 프로그래머 데이를 축하하는 분위기에 합류할 수 있다.
위의 JavaScript 마이그레이션 라이센스는 원본 소스 코드 라이센스를 따릅니다.
[여담]
이렇게 말하면 https://hack4.jp/relatedinfo/t-shirt/1st/
Hack for Japan의 티셔츠에 기재된 코드에 대해 이야기를 나눌 때 함께 코드를 댓글로 남겨주세요.
나는 몇 가지 언어로 직접 행동할 수 있다는 느낌을 고려한 것을 기억한다.
while (Japan.recovering) {
we.hack();
}
사고를 방지하기 위해서는 원본 코드를 논평하는 것이 중요하다.
Reference
이 문제에 관하여(JavaScript(ES2018)에서 매년 256일째 실시#프로그래머의 날), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kawanet/items/8a2f6499a23e36525d06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)