>웹 프론트엔드 >JS 튜토리얼 >Node.js에서 약속을 실행하고 잊어버리는 것이 허용됩니까?

Node.js에서 약속을 실행하고 잊어버리는 것이 허용됩니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-30 18:39:11303검색

Is Firing and Forgetting Promises in Node.js Acceptable?

Node.js(ES7)의 Promise 실행 및 삭제

Node.js의 비동기 프로그래밍에는 Promise 작업이 포함되는 경우가 많습니다. 약속은 비동기 작업의 최종 완료 또는 실패를 나타냅니다. 특정 시나리오에서는 완료될 때까지 기다리지 않고 비동기 작업을 시작하려고 할 수 있습니다. 이를 약속의 "실행 후 잊어버리기"라고 합니다.

다음 코드 조각을 고려하세요.

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();

비동기 함수 내에서는 대기를 사용하지 않고도 첫 번째 줄을 실행할 수 있습니다. 이는 Promise를 생성하고 즉시 폐기합니다.

이것이 허용됩니까?

예, 이 방식으로 비동기 작업을 실행할 수 있습니다. Promise를 실행하고 잊어버리면 두 개의 비동기 함수(Promise 생성 및 someOtherAsyncFunction 함수)가 동시에 실행됩니다.

오류 처리

이 접근 방식의 한 가지 잠재적인 문제는 다음과 같습니다. delAsync에 의해 생성된 Promise가 거부되면 알림을 받지 않습니다. 이로 인해 처리되지 않은 거부가 발생하여 결국 프로세스가 중단될 수 있습니다.

결과 무시에 대한 대안

비동기 작업의 결과에 관심이 없다면 몇 가지 방법이 있습니다. 처리 방법:

  • 무효 연산자: void 연산자를 사용하여 결과를 삭제합니다.

    void (await someAsyncFunction());
  • catch 및 무시: 빈 값이 있는 catch 메서드를 사용하여 예외를 무시합니다. handler:

    ... someAsyncFunction().catch(function ignore() {}) ...
  • 병렬 실행: 여전히 다른 비동기 작업을 기다리고 싶지만 특정 작업의 결과는 신경 쓰지 않는 경우 다음을 사용하세요. Promise.all과 함께 array:

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;

결론

Node.js에서는 Promise를 실행하고 잊어버릴 수 있지만, 알아두는 것이 중요합니다 거부를 무시하는 것과 관련된 잠재적 위험에 대해 설명합니다. 이 기술을 사용하기 전에 비동기 작업의 결과에 정말로 관심이 없는지 신중하게 고려하십시오. 또한 관심이 없는 결과를 처리하는 데 사용할 수 있는 대체 접근 방식도 있습니다.

위 내용은 Node.js에서 약속을 실행하고 잊어버리는 것이 허용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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