>웹 프론트엔드 >JS 튜토리얼 >`response.json()`이 Fetch에서 Promise를 반환하는 이유는 무엇이며 결과에 어떻게 액세스할 수 있나요?

`response.json()`이 Fetch에서 Promise를 반환하는 이유는 무엇이며 결과에 어떻게 액세스할 수 있나요?

DDD
DDD원래의
2024-12-15 17:24:13931검색

Why Does `response.json()` Return a Promise in Fetch, and How Can I Access the Result?

가져오기 응답 처리의 약속 및 약속 연결에 대한 통찰

fetch() API를 실험하는 동안 동작과 관련된 흥미로운 관찰이 나타났습니다. ~의 .json().

관찰:

.then()에 전달된 객체 리터럴 내에서 response.json()을 반환하면 Promise 객체가 획득됩니다. 그러나 .then() 핸들러에서 직접 반환되면 실제 값을 반환합니다.

설명:

  • response.json이 왜 작동합니까? 약속을 반환하시겠습니까?

response.json을 호출하면 다음에 대한 또 다른 약속을 검색합니다. 아직 로드되지 않은 HTTP 응답 본문입니다. 헤더를 수신하자마자 응답 객체를 수신하지만 본문을 아직 사용할 수 없기 때문입니다.

  • .then()에서 Promise를 반환하면 왜 값이 제공되나요?

이것이 Promise의 기본적인 측면입니다. Promise는 콜백 함수에서 Promise 반환 및 후속 채택을 활성화하여 중첩 없이 연결성을 허용합니다.

대체 접근 방식:

JSON을 기다린 후 응답 상태에 액세스하려면 본문에 다른 접근법을 채택할 수 있습니다.

  • 다음을 사용하여 중간 결과를 반환합니다. 중첩된 .then() 체인:

    fetch(url)
    .then(response => response.json())
    .then(data => ({
      data: data,
      status: response.status
    }))
    .then(res => {
      console.log(res.status, res.data.title);
    });
  • 비동기 기능 활용 및 대기:

    const response = await fetch(url);
    const data = await response.json();
    console.log(response.status, data.title);

주의:

항상 응답 상태를 확인하기 전에 확인하는 것이 좋습니다. JSON 데이터가 항상 포함되지 않을 수 있으므로 응답 콘텐츠에 액세스합니다.

위 내용은 `response.json()`이 Fetch에서 Promise를 반환하는 이유는 무엇이며 결과에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.