2017-05-21 4 views
2

버전 1.5.8에서 Angularjs 버전 1.5.7 및 $q.race 함수가 추가되었습니다.

나는이 함수들 사이에 어떤 차이가 있다면 함수 Promise.race이 있고 내 질문이 있다는 것을 알았다.

차이점이 있다면 여기에서 함수를 복사해야합니까 : AngularJS: $q.race() in old angular versions $q.race과 동일하게 작동합니까?

미리 감사드립니다. 내 영어로 죄송합니다.

+0

다른 점은 ES6 약속을 반환하는 동안 분명한 약속을 반환한다는 것입니다. – Bergi

답변

0

자바 스크립트 ES6 사양은 Promise.race 같이, 상술 한 방법을 소개 사양에서, Promise.all 등으로 정의되어 있기 때문에 그와 함께 할 지적했다 기본적으로 각도에는 약속을 관리하기 위해 $q 서비스가 내장되어 있습니다. 약속 또는 모든 관련 작업에서 반환 한 데이터와 관련된 모든 것을 변경하기 위해 다이제스트주기를 자동으로 트리거합니다. ES6 사양을 사용할 수있는 경우 기본 제공되는 JavaScript 약속을 모두 직접 사용할 수 있지만 모든 변경 사항을 적용하려면 수동으로 $ digest를 트리거해야합니다. 이것은 angularj에서의 $ q 또는 표준 약속의 주요 차이점 중 하나입니다. 또한, 예를 들어 $ http와 같이 $ q와 통합되는 많은 관련 메서드가 있으며 테스트를 통해 $ q를 사용하여보다 쉽게 ​​치료할 수 있습니다. 가능하면 $ q를 사용하는 것이 좋습니다.

+0

'Promise.race'를 사용하면 경주에서 돌아 오는 약속의'then' 함수에서'$ digest'를 트리거해야합니까? – Sagie

+1

예와 관련된 변경 내용이 포함 된 범위에 대해 $ digest를 트리거해야합니다. – quirimmo

0

핵심 차이점은 $ q.race가 약속 콜백을 실행 한 후에 발생할 수있는 변경 내용을 처리하기 위해 $ rootScope. $ apply()를 호출한다는 것입니다. 약속 A + 사양은 Promise.all, Promise.race이 ES6/ES2015 사양하지 약속 A +

+0

$ q.race가 $ rootScope $ apply 메소드를 모두 트리거한다는 것을 어디서 읽었습니까? 이것이 일반적으로 $ q와 관련이 없으며 이것은 특정'.race' 메소드와 관련이 없다고 확신합니까? – quirimmo