Node.js(ES7)의 Promise 실행 및 삭제
비동기 프로그래밍에서는 결과를 기다리지 않고 작업을 분기하는 것이 일반적입니다. . Node.js(ES7)에서 Promise를 사용하여 이 작업을 수행할 수 있나요?
질문:
다음 코드 조각을 고려하세요.
redisClientAsync.delAsync('key'); return await someOtherAsyncFunction();
Can 기다리지 않고 비동기 함수의 첫 번째 줄을 래핑합니까? 그렇게 하면 어떻게 되나요?
답변:
예, delAsync 호출을 기다리지 않고 두 비동기 함수를 병렬로 실행할 수 있습니다. Promise를 만들고 폐기하면 사실상 Promise를 "실행하고 잊어버리는" 것입니다.
왜 이것이 이상적이지 않습니까?
이 접근 방식에는 심각한 단점이 있습니다. delAsync 약속이 거부되면 알림을 받지 않습니다. 이로 인해 처리되지 않은 거부 오류 및 잠재적 충돌이 발생할 수 있습니다.
대체 접근 방식:
함수 병렬 실행: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!