FirebaseStorage의 생명주기

·2분 읽기·조회 2

firebase.storage의 생명주기에 대해서 설명하고자 합니다.

문제 인식

A 브라우저에서 firebase.storage를 이용해서 window.open()을 하는 기능이 있는데,
B 브라우저에서 window.open()을 해도, A브라우저에서 같이 새창이 띄워 지는것 아니겠습니까..

아래는 문제의 코드 입니다.

const fb_storage = firebase.storage();

function log_file_download(fileName){
	fb_storage.ref(fileName+'.txt').getDownloadURL().then((url) => {
		window.open(url);
	})
	.catch((error) => {
		console.log(error);
		alert("파일을 찾을 수 없습니다.");
	});
}

위 소스를 보면 firebase storage를 이용한 파일이 업로드가 완료되면 새 창을 열어서 해당 파일을 브라우저에서 보여주는 기능입니다.

결론

위 소스를 보면 fb_storage가 전역변수로 설정되어 있습니다.
그 변수를 그대로 사용하면, promise가 포함된 함수가 종료가 되어도, 계속 실행되는 현상이 발생합니다.
함수가 종료 되었을때, promise도 종료하려면, 함수내에, 지역변수로 firebase.storage()로 인스턴스를 새로 만들어서 사용해야 합니다.
어찌보면 전역변수니까 당연한 문제였지만 함수가 종료되면 promise의 생명주기도 끝날거라 생각 했습니다.
다들 주의하면서 사용합시다!

감사합니다.

댓글 0

불러오는 중...