함수가 제대로 마무리될 수 있도록 수명 주기를 관리하는 것이
중요합니다. 함수를 올바르게 종료하면 함수가 너무 오래 실행되거나
무한 루프에 빠져 과도한 요금이 부과되는 일을 피할 수 있습니다. 또한 함수가 종료 조건 또는 상태에 도달하기 전에 함수를 실행하는 Cloud Functions 인스턴스가 종료되지 않도록 할 수도 있습니다.
다음과 같이 함수의 수명 주기를 관리하는 것이 좋습니다.
자바스크립트 프라미스를 반환하여 비동기 처리를 수행하는 함수('백그라운드 함수'라고도 함)를 확인합니다.
res.redirect(), res.send() 또는 res.end()로 HTTP 함수를 종료합니다.
return; 문으로 동기 함수를 종료합니다.
자바스크립트 프라미스로 비동기 코드 단순화
프라미스는 비동기 코드에 대한 콜백을 대체하는 최신 기능입니다. 프라미스는
하나의 작업과 해당 작업이 이후에 반환할 수 있는 값을 나타냅니다. 또한 동기식 코드의
try/catch와 비슷한 방식으로 오류를 전파할 수 있습니다. Firebase 블로그에서 Firebase SDK의 프라미스를 알아보고 MDN에서 일반 프라미스를 알아보세요.
프라미스와 함수의 연동
함수에 자바스크립트 프라미스를 반환하면 해당 함수는 프라미스가
해결 또는 거부될 때까지 계속 실행됩니다. 함수가 작업을 성공적으로
완료했음을 나타내려면 프라미스를 해결해야 합니다. 오류를
나타내려면 프라미스를 거부해야 합니다. 따라서 원하는 오류만 처리하면 됩니다.
다음 코드는 Firebase Realtime Databaseref를 사용하여 값을 "world!"로 설정합니다. set의 결과를 반환하면 함수가 다음과 같이 보장됩니다.
데이터베이스에 문자열을 쓰는 비동기 작업이 실행될 때까지 계속 실행
완전히 완료됩니다.