> 웹 프론트엔드 > JS 튜토리얼 > Node.js(ES7) Promise는 \'Fire and Forget\'을 비동기식으로 구현할 수 있으며 어떤 위험이 있습니까?

Node.js(ES7) Promise는 \'Fire and Forget\'을 비동기식으로 구현할 수 있으며 어떤 위험이 있습니까?

Susan Sarandon
풀어 주다: 2024-11-27 13:23:18
원래의
779명이 탐색했습니다.

Can Node.js (ES7) Promises Implement

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

비동기 프로그래밍에서는 결과를 기다리지 않고 작업을 분기하는 것이 일반적입니다. . Node.js(ES7)에서 Promise를 사용하여 이 작업을 수행할 수 있나요?

질문:

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

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();
로그인 후 복사

Can 기다리지 않고 비동기 함수의 첫 번째 줄을 래핑합니까? 그렇게 하면 어떻게 되나요?

답변:

예, delAsync 호출을 기다리지 않고 두 비동기 함수를 병렬로 실행할 수 있습니다. Promise를 만들고 폐기하면 사실상 Promise를 "실행하고 잊어버리는" 것입니다.

왜 이것이 이상적이지 않습니까?

이 접근 방식에는 심각한 단점이 있습니다. delAsync 약속이 거부되면 알림을 받지 않습니다. 이로 인해 처리되지 않은 거부 오류 및 잠재적 충돌이 발생할 수 있습니다.

대체 접근 방식:

  • 약속을 기다리세요. 처리하려는 경우 부작용이나 예외가 발생하면 약속을 기다려야 합니다. 그러나 결과가 필요하지 않은 경우 void를 사용하여 삭제할 수 있습니다(someAsyncFunction()을 기다립니다).
  • 예외 잡기: 결과에 관심이 없지만 원하는 경우 예외를 잡으려면 ...someAsyncFunction().catch(functionignore()를 사용할 수 있습니다. {})....
  • 함수 병렬 실행: delAsync 및 someOtherAsyncFunction 작업을 동시에 실행하려면 Promise.all():

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;
    로그인 후 복사
    이 경우 delAsync 결과는 무시되지만 여전히 예외는 발생합니다.

결론:

"실행 후 잊어버리기"가 편리할 수 있지만 잠재적인 결과를 고려하는 것이 중요합니다. 요구사항(대기, 결과 처리 및 예외 포착)을 명확하게 정의하면 Node.js 애플리케이션에서 비동기 작업을 적절하게 처리할 수 있습니다.

위 내용은 Node.js(ES7) Promise는 \'Fire and Forget\'을 비동기식으로 구현할 수 있으며 어떤 위험이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿