Angular.js에서 약속이 이행되었을 때 항상 코드를 실행하는 방법
Angular.js 어플리케이션에서 몇 가지 비동기 작업을 실행하고 있습니다.시작하기 전에 modal div로 어플리케이션을 덮은 다음 작업이 완료되면 작업이 성공했는지 여부에 관계없이 div를 제거해야 합니다.
현재 가지고 있는 것은 다음과 같습니다.
LoadingOverlay.start();
Auth.initialize().then(function() {
LoadingOverlay.stop();
}, function() {
LoadingOverlay.stop(); // Code needs to be duplicated here
})
동작은 좋지만, 다음과 같은 깨끗한 코드를 원합니다.
LoadingOverlay.start();
Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success.
LoadingOverlay.stop();
})
꽤 흔한 문제이기 때문에 할 수 있다고 생각했지만, 문서에서는 아무것도 찾을 수 없었습니다.할 수 있을 것 같아?
이 기능은 이 풀 요청으로 구현되어 현재 AngularJS의 일부가 되었습니다.처음에는 "always"라고 불렸고 나중에는 "always"로 이름이 바뀌었다.finally
이 때문에, 코드는 다음과 같습니다.
LoadingOverlay.start();
Auth.initialize().then(function() {
// Success handler
}, function() {
// Error handler
}).finally(function() {
// Always execute this on both error and success
});
주의해 주세요.finally
는 예약된 키워드이므로 특정 브라우저(IE 및 Android Browser 등)에서 끊어지지 않도록 문자열로 만들어야 할 수 있습니다.
$http.get('/foo')['finally'](doSomething);
Umbraco 버전 7.3.5 백엔드와 Angular를 사용하고 있습니다.JS 버전 1.1.5에서 이 스레드를 찾았습니다.승인된 답변을 구현했을 때 다음과 같은 오류가 발생했습니다.
xxx(...).그러면(...).syslog는 함수가 아닙니다.
하지만 효과가 있었던 건always
Angular의 이전 버전을 사용하는 다른 사용자가 있다면JS가 이 스레드를 찾아서 사용할 수 없습니다.finally
대신 이 코드를 사용하다
LoadingOverlay.start();
Auth.initialize().then(function() {
// Success handler
}, function() {
// Error handler
}).always(function() {
// Always execute this on both error and success
});
angularJS 를 사용하지 않는 유저에게 있어서, 에러를 검출할 수 있는 경우는(.finally() 가 검출할 수 있는지는 확실하지 않습니다), 중복 코드를 피하기 위해서 .catch().then() 를 사용할 수 있습니다.
Promise.resolve()
.catch(() => {})
.then(() => console.log('finally'));
catch()는 로깅이나 기타 청소에 도움이 될 수 있습니다.https://jsfiddle.net/pointzerotwo/k4rb41a7/
ngView를 사용하여 페이지 내용을 렌더링하고 $viewContentLoaded 이벤트에서 모달 삭제를 트리거합니다.해당 이벤트에 대해서는 http://docs.angularjs.org/api/ng.directive:ngView를 참조하고 $on 이벤트 청취자에 대해서는 http://docs.angularjs.org/api/ng.$rootScope.Scope을 참조하십시오.
언급URL : https://stackoverflow.com/questions/16040263/how-to-always-run-some-code-when-a-promise-is-fulfilled-in-angular-js
'programing' 카테고리의 다른 글
유튜브 동영상을 웅장한 팝업창에 삽입하는 방법은? (0) | 2023.04.03 |
---|---|
WordPress Plugin 옵션 기본값을 설정하려면 어떻게 해야 합니까? (0) | 2023.04.03 |
모킹 앵글Jasmine 유닛 테스트에서의 JS 모듈 의존성 (0) | 2023.04.03 |
Reactjs와 Rxjs의 차이점은 무엇입니까? (0) | 2023.04.03 |
WordPress에서 프로그래밍 방식으로 관리자 사용자 생성 (0) | 2023.04.03 |