.map 비동기 콜백 및 이벤트 루프

멍청한 놈

이 코드 스 니펫은 Google 개발자 가 제공 한 것 입니다 .

// map some URLs to json-promises
const jsonPromises = urls.map(async url => {
  const response = await fetch(url);
  return response.json();
});

나는 마지막 jsonPromises에 약속의 배열이 될 것이라는 것을 이해합니다 . 그러나 나는 그것이 어떻게 일어나는지 완전히 확신하지 못합니다.

내 이해에 따르면, 실행은이 선에 도달 할 때 const response = await fetch(url);, 그것은 웹 API를 호출 스택에서 이동 동일한 작업을 수행 return response.json();하고, 다음으로 이동 url에서 urls. 맞습니까? 간단한 경우 이벤트 루프가 어떻게 작동하는지 이해 setTimeout하지만이 예제는 저를 많이 혼란스럽게합니다.

조나스 윌 름스

다음과 같은 일이 발생합니다.

1) .map함수가 실행되고 각 요소 (비동기 함수)에 대한 콜백을 실행합니다. 이 함수는를 호출 fetch하여 엔진 내부에서 일부 마법을 시작합니다. fetchPromise를 반환합니다. await도달하면 함수 실행이 중지됩니다. 에서 수행 한 함수에 대한 호출 .map은 약속 으로 평가됩니다. .map모든 약속을 수집하고 배열에 저장하고 배열을 반환합니다.

2) 언젠가 후드 아래에서 실행되는 가져 오기 중 하나가 연결을 설정하고 JS로 다시 전화를 걸어 fetch약속을 해결합니다 . 그러면 async function호출이 계속됩니다. res.json()엔진이 연결에서 모든 패킷을 수집하고 내부적으로 JSON으로 구문 분석하도록합니다. 다시 Promise를 반환하고 awaited 를 받으면 실행이 다시 중지됩니다.

3) 언젠가 연결 중 하나가 종료되고 전체 응답이 JSON으로 제공됩니다. promise가 해결되고 async function호출이 계속 실행됩니다. returns로 인해 promise (배열에있는 것)가 해결됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

for 루프 외부의 콜백, 루프 내부의 폐쇄 및``동기 ''이벤트

분류에서Dev

NodeJS 루프의 비동기 이중 콜백

분류에서Dev

forEach, 비동기 및 콜백

분류에서Dev

for 루프의 비동기 콜백 실패

분류에서Dev

비동기 콜백에서 마운트 해제 및 useState

분류에서Dev

자바 스크립트 비동기 콜백-Promise 및 setTimeout

분류에서Dev

다음 루프 전에 함수의 콜백이있는 Node.js 비동기 루프

분류에서Dev

루프-비동기 이벤트 사용

분류에서Dev

자바 스크립트 : setTimeout, for 루프 및 콜백 함수

분류에서Dev

콜백 기반 및 이벤트 기반 이벤트 처리 시스템의 차이점은 무엇입니까?

분류에서Dev

이중 루프의 콜백

분류에서Dev

비동기 콜백으로 이벤트 처리

분류에서Dev

이벤트 콜백 내부의 비동기 작업

분류에서Dev

몽구스 비동기 .save 및 콜백

분류에서Dev

노드의 이벤트 루프 단계 콜백

분류에서Dev

React useState 비동기 업데이트 및 for 루프

분류에서Dev

QCoreApplication 이벤트 루프 및 Windows 서비스 제어 처리기 기능

분류에서Dev

루프 함수 비동기 콜백에서 카운터 사용

분류에서Dev

자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

분류에서Dev

나중에 동기 실행이있는 콜백이있는 Node.js for 루프

분류에서Dev

진행하기 전에 Javascript 동기 루프 내부의 비동기 콜백이 완료되기를 어떻게 기다릴 수 있습니까?

분류에서Dev

Nodejs에서 비동기 콜백 이벤트를 쌓는 최적의 방법

분류에서Dev

Node.js의 이벤트 루프가 자체적으로 콜백을 실행합니까 아니면 호출 스택이 콜백을 실행하기 위해 콜백을 호출 스택에 전달합니까?

분류에서Dev

이벤트 핸들러, 이벤트 큐 및 비동기 동작

분류에서Dev

교체 내 콜백 기능 (루프 내)

분류에서Dev

루프로 비동기 및 대기

분류에서Dev

libuv 이벤트 루프 : 핸들 준비 및 핸들 사용 확인

분류에서Dev

자바 스크립트 및 콜백 기능이있는 OOP

분류에서Dev

루프에서 작동하지 않는 JQuery 애니메이션 콜백

Related 관련 기사

  1. 1

    for 루프 외부의 콜백, 루프 내부의 폐쇄 및``동기 ''이벤트

  2. 2

    NodeJS 루프의 비동기 이중 콜백

  3. 3

    forEach, 비동기 및 콜백

  4. 4

    for 루프의 비동기 콜백 실패

  5. 5

    비동기 콜백에서 마운트 해제 및 useState

  6. 6

    자바 스크립트 비동기 콜백-Promise 및 setTimeout

  7. 7

    다음 루프 전에 함수의 콜백이있는 Node.js 비동기 루프

  8. 8

    루프-비동기 이벤트 사용

  9. 9

    자바 스크립트 : setTimeout, for 루프 및 콜백 함수

  10. 10

    콜백 기반 및 이벤트 기반 이벤트 처리 시스템의 차이점은 무엇입니까?

  11. 11

    이중 루프의 콜백

  12. 12

    비동기 콜백으로 이벤트 처리

  13. 13

    이벤트 콜백 내부의 비동기 작업

  14. 14

    몽구스 비동기 .save 및 콜백

  15. 15

    노드의 이벤트 루프 단계 콜백

  16. 16

    React useState 비동기 업데이트 및 for 루프

  17. 17

    QCoreApplication 이벤트 루프 및 Windows 서비스 제어 처리기 기능

  18. 18

    루프 함수 비동기 콜백에서 카운터 사용

  19. 19

    자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

  20. 20

    나중에 동기 실행이있는 콜백이있는 Node.js for 루프

  21. 21

    진행하기 전에 Javascript 동기 루프 내부의 비동기 콜백이 완료되기를 어떻게 기다릴 수 있습니까?

  22. 22

    Nodejs에서 비동기 콜백 이벤트를 쌓는 최적의 방법

  23. 23

    Node.js의 이벤트 루프가 자체적으로 콜백을 실행합니까 아니면 호출 스택이 콜백을 실행하기 위해 콜백을 호출 스택에 전달합니까?

  24. 24

    이벤트 핸들러, 이벤트 큐 및 비동기 동작

  25. 25

    교체 내 콜백 기능 (루프 내)

  26. 26

    루프로 비동기 및 대기

  27. 27

    libuv 이벤트 루프 : 핸들 준비 및 핸들 사용 확인

  28. 28

    자바 스크립트 및 콜백 기능이있는 OOP

  29. 29

    루프에서 작동하지 않는 JQuery 애니메이션 콜백

뜨겁다태그

보관