수색…


소개

async 함수는 약속을 반환하는 함수입니다. 약속이 해결 될 때까지 호출자에게 수익을 await 결과를 계속합니다.

반복자를 사용하면 for-of 루프 for-of 통해 컬렉션을 반복 할 수 있습니다.

비동기 반복자는 각 반복이 for-await-of 루프 for-await-of 사용하여 for-await-of 수있는 약속 인 컬렉션입니다.

비동기 반복자는 3 단계 제안 입니다. 크롬 카나리아 60에 - --harmony-async-iteration

통사론

  • 비동기 함수 * asyncGenerator () {}
  • yield는 asyncOperationWhichReturnsAPromise ()를 기다리고 있습니다.
  • for await (asyncGenerator () 결과) {/ * 결과는 약속의 해결 된 값입니다. * /}

비고

비동기 반복자는 Observable의 선언적 푸시 스트림과 달리 선언적 끌어 오기 스트림입니다.

유용한 링크

기초

JavaScript Iteratorvalue : <any> 이고 done : <boolean> 인 객체 인 IteratorItem 을 반환하는 .next() 메소드가있는 객체입니다.

JavaScript AsyncIterator 는 다음 값에 대한 약속 인 Promise<IteratorItem> 을 반환하는 .next() 메서드가있는 객체입니다.

AsyncIterator를 만들려면 비동기 생성기 구문을 사용할 수 있습니다.

/**
 * Returns a promise which resolves after time had passed.
 */
const delay = time => new Promise(resolve => setTimeout(resolve, time));

async function* delayedRange(max) {
  for (let i = 0; i < max; i++) {
    await delay(1000);
    yield i;
  }
}

delayedRange 함수는 최대 수를 취하고 1 초 간격으로 0에서 해당 숫자까지의 수를 생성하는 AsyncIterator 반환합니다.

용법:

for await (let number of delayedRange(10)) {
  console.log(number);
}

for await of loop는 비동기 함수의 내부에서만 사용할 수있는 새로운 구문의 일부이며 비동기 생성자입니다. 루프 내에서 산출 된 값 (Promises라는 것을 기억하십시오)은 풀 렸으므로 약속이 숨겨집니다. 루프 내에서 직접 값 (생성 된 숫자)을 처리 할 수 for await of 루프를 기다리는 동안 사용자를 대신하여 약속이 대기합니다.

위 예제는 9 초를 기록 할 때까지 1 초, 로그 0, 또 다른 초, 로그 1 등 for await of , AsyncIteratordone 되면 for await of 루프 for await of 가 종료됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow