>  기사  >  웹 프론트엔드  >  연결된 약속에서 정의되지 않은 값이 발생하는 원인은 무엇이며 이를 해결하는 방법은 무엇입니까?

연결된 약속에서 정의되지 않은 값이 발생하는 원인은 무엇이며 이를 해결하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-19 22:19:02703검색

What Causes Undefined Values in Chained Promises and How to Fix Them?

연결된 약속과 정의되지 않은 값

이 경우 연결된 .then()은 어떤 값도 반환하지 않거나 새 값을 생성하지 않습니다. 약속하다. doStuff()에서 생성된 외부 약속이 n * 10 값으로 확인되면 후속 .then()이 호출되고 그 안에 있는 표현식의 결과(로깅 문 및 잠재적인 return 문)가 콘솔에 기록됩니다. 그러나 이 연결된 .then()에서 실제 값이 반환되지 않으므로 doStuff에 연결된 후속 .then()은 아무것도 받지 않습니다. 따라서 정의되지 않은 값이 됩니다.

해결책: 값 또는 약속 반환 from .then()

이 문제를 해결하려면 .then() 콜백이 값이나 값 또는 Promise를 반환하는 다른 함수 호출을 반환하는지 확인하세요. 이 수정된 예에서는

<code class="js">const doStuff = (n /* `n` is expected to be a positive number */) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(n * 10);
    }, Math.floor(Math.random() * 1000));
  })
    .then((result) => {
      if (result > 100) {
        console.log(`${result} is greater than 100`);
      } else {
        console.log(`${result} is not greater than 100`);
      }
      // Return `result` to pass it to the next `.then()`
      return result;
    });
};

doStuff(9)
  .then((data) => {
    console.log("data is: " + data);
  });</code>

이제 연결된 .then()이 이전 .then()에서 반환된 값을 수신하여 정의되지 않은 문제를 제거합니다. 출력에는 이전 .then()에서 전달된 값이 표시됩니다.

위 내용은 연결된 약속에서 정의되지 않은 값이 발생하는 원인은 무엇이며 이를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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