본문 바로가기
Today I learned

2021 04 28 - 비동기로 외부 라이브러리가 올라올때까지 기다린후, 최초 1회 실행하기

by soheemon 2021. 4. 28.

외부 GA라이브러리가 올라올때까지 기다린후에 이벤트를 전송해야 했다.

동작의 목표는

1) CDN에서 GA스크립트를 로딩될때까지 기다린후,

2) ga객체의 메서드를 1회만 호출하는것.

 

setInterval로 2초동안 ga가 불러와졌는지 주기적으로 확인후.. 올라오지 않았다면 return

setTimeout으로 10초후에 Interval이 끝나도록 했다.

익명함수 안에서 scope를 유지하게끔 클로저 패턴을 사용해봤다..

 

var ckGaInterval = setInterval(
(function(){
	var firstCall = true
	return function(){
		try{
			ga		//외부 라이브러리의 객체
		}catch(e){
			return
		}
		if(firstCall){
			var run = (function(){
            console.log(ga)	//ga가 올라오고 최초 1회만 실행
		})()
		}
		firstCall = false
	}
})()
, 2000);

setTimeout(function(){
    clearInterval(ckGaInterval);
}, 10000);

댓글