IE8에서 각도 $q.catch() 메서드가 실패함
약속거부(기본에 의해 반환된 약속)를 확인하려고 할 때 IE8에서 이상한 버그가 발생했습니다.ngResource
콜) :
이 코드는.then(success, fail)
구문:
promise.then(function(response) {
// success
},
function(response) {
// error
});
근데 이건 실패했어.then(success).catch(fail)
구문:
promise.then(function(response) {
// success
})
.catch(function(response) {
// error
});
IE 에러는, 를 나타내고 있습니다..catch()
행은 다음과 같습니다.
예상 식별자
내가 잘못하고 있는 건가요?누군가 그것을 재현하고 있는 건가요?아니면 키워드가 제한되어 있기 때문에 일반적인 IE8인가요?
감사해요.
괄호 표기법을 사용해야 합니다.
promise.then(function(response) {
// success
})
["catch"](function(response) {
// error
});
이는 IE8이 도트 표기법에서 bare 키워드를 허용하지 않는ECMAScript 3을 구현하고 있기 때문입니다.최신 브라우저는 이를 가능하게 하는 ECMAScript 5를 구현하고 있습니다.
많은 라이브러리 별칭.catch
다른 키워드를 지정합니다.그러나 Angular 약속이 구축되는 방식은 확장하기가 쉽지 않습니다.$q
약속들.그렇게["catch"]
그래야 할 것 같아요이는 다음 경우에도 해당됩니다.finally
.
네, IE8은 키워드라고 생각해요.몇 가지 방법으로 이 문제를 해결할 수 있습니다.
promise.then(function() { })['catch'](function() { });
promise.then(function() { /* success handler */ })).then(null, function() { /* error handler */ });
- 또는 성공과 오류를 하나로 결합할 수 있습니다.
then
진술서(적절한 경우):promise.then(function() { /* success handler here */ }, function() { /* error handler here */ });
catch
2번 줄임말이에요.
http://docs.angularjs.org/api/ng/service/$q#the-promise-api
마지막으로 JavaScript에서 예약된 단어이며 예약된 키워드는 ES3에서 속성 이름으로 지원되지 않기 때문에 코드 IE8과 Android 2.x를 호환시키려면 promise'finally'와 같은 메서드를 호출해야 합니다.
어획량도 마찬가지입니다.
언급URL : https://stackoverflow.com/questions/23105089/angular-q-catch-method-fails-in-ie8
'programing' 카테고리의 다른 글
json.dumps를 사용할 때 python dict의 int 키가 문자열로 바뀌는 이유는 무엇입니까? (0) | 2023.02.26 |
---|---|
AngularJS: 컨트롤러와 공장/서비스는 어떻게 풍부하고 계층적인 객체 모델을 사용하여 구조화해야 합니까? (0) | 2023.02.26 |
각도 ng-참이 아닌 경우 (0) | 2023.02.26 |
Spring Boot 응용 프로그램에서 Servlet 필터 실행 순서를 정의하는 방법 (0) | 2023.02.26 |
Oracle에서 "<>"의 의미 (0) | 2023.02.26 |