Fetch()의 Promise 처리 이해
JavaScript의 fetch() API로 작업할 때 .json을 사용할 때 예기치 않은 동작이 발생할 수 있습니다. () 방법. 이 기사에서는 .json()이 특정 시나리오에서는 Promise를 반환하고 다른 시나리오에서는 반환하지 않는 이유를 자세히 설명합니다.
Promise 동작이 다른 이유
.json() 메서드는 응답 본문을 검색하고 이를 JSON으로 구문 분석하도록 개체를 약속합니다. 이는 HTTP 응답 본문을 즉시 사용할 수 없기 때문입니다. 따라서 .json() 메서드는 본문을 사용할 수 있게 되면 확인하는 Promise를 반환합니다.
그러나 Promise 객체가 다음과 같이 .then() 핸들러에서 직접 반환되는 경우:
fetch(url) .then(response => response.json())
반환된 값은 Promise가 아닙니다. 프라미스는 .then() 핸들러에서 무한정 래핑되지 않습니다. 대신 기본 값이 반환되어 비동기 작업 체인이 계속되도록 합니다.
반환된 Promise를 통한 값 액세스
반대로 Promise 객체가 다음과 같은 반환된 개체:
fetch(url) .then(response => { return { data: response.json(), status: response.status } })
.then() 처리기에서 반환된 값은 그대로 유지됩니다. 약속하다. 이는 새로운 JavaScript 객체가 생성되고 해당 범위 내에서 .json() 메서드가 호출되기 때문입니다. 결과 Promise는 반환된 객체의 데이터 속성에 할당됩니다.
대체 접근 방식
하나의 .then() 핸들러에서 응답 상태 및 JSON 데이터에 액세스하려면, 다음 접근 방식을 사용할 수 있습니다.
결론
.json() 메서드의 promise 동작과 이 메서드가 .then() 핸들러와 상호 작용하는 방식을 이해하는 것이 효과적인 비동기식을 위해 매우 중요합니다. fetch() API를 사용하여 프로그래밍합니다. Promise가 제공하는 유연성을 활용하여 개발자는 HTTP 응답을 효율적으로 처리하고 비동기 작업의 불필요한 중첩을 방지할 수 있습니다.
위 내용은 fetch().then().json()이 때로는 Promise를 반환하고 때로는 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!