‘Promise’ is undefined – JavaScript

크롬 브라우저에서 문제없는 코드를 Internet Explorer 11에서 동작시킬 때 아래와 같은 에러가 발생하는 경우가 있다.

ReferenceError: 'Promise' is undefined

PromiseES6에서 지원하는 자바스립트 내장 객체며 비동기 동작의 완료와 실패 처리를 도와주는 함수다. 그런데 Internet Explorer 11에서는 지원하지 않는다.

'Promise' in window // false

AngularJS를 사용하고 있다면 $q를 사용하여 Promise를 대체할 수 있다. 이 기능을 어떻게 폴리필 해야 하나 고민했는데 차이점에 주의해야겠지만 사용할 만하다. $q를 사용하기 위해서 $q 인젝션하는 것을 잊지 말기 바란다.

// Chrome
var promise = new Promise(function(resolve, reject){});

// Internet Explorer 11
var promise = $q(function(resolve, reject){});

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.