내 모듈/sdk에서 비 앵귤러 javascript로 약속을 반환하고 싶습니다. 예를 들어 약속을 jquery로 반환하는 경우 jquery 지연 객체를 보내야합니다. Angular promise를 jquery promise/deferred obj로 변환하려면 어떻게해야합니까?변환 방법 지연된 객체 jquery 각도 약속
모든 의견을 보내 주시면 감사하겠습니다.
내 모듈/sdk에서 비 앵귤러 javascript로 약속을 반환하고 싶습니다. 예를 들어 약속을 jquery로 반환하는 경우 jquery 지연 객체를 보내야합니다. Angular promise를 jquery promise/deferred obj로 변환하려면 어떻게해야합니까?변환 방법 지연된 객체 jquery 각도 약속
모든 의견을 보내 주시면 감사하겠습니다.
면책 조항 : jQuery를 약속 다른 라이브러리와 좋은 연주하지 않는 -
모든에서. jQuery는 다른 제 3 자 약속을 자체적으로 동화하지 않습니다. Angular $ q는 다른 한편으로는 약속 할 것입니다. 따라서 선택의 여지가있을 때마다 jQuery 약속을 Angular 약속에 동화하고 그 반대는 아닙니다. (이 모든 면책 사항은 jQuery 3.0에서 변경되었으며이 면책 조항이 표시되고 3.0이 이미 릴리스되었습니다. 주석을 남겨주십시오).
var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...));
기본 또는 블루 버드 약속에 jQuery를 약속 변환 : $ q를 코너에게 같은 약속/A + 불만 약속을 변환
var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..));
각도 약속에 jQuery를 약속 변환
약속 또는 Bluebird 약속 또는 jQuery 약속에 대한 기본 약속 :
function convert(p){
var d = $.Deferred();
p.then(function(val){
d.resolve(val);
}, function(err){
d.reject(err);
});
return d.promise();
}
var jqPromise = convert($http.get(...)); // example usage
// you might be tempted to think you can easily do:
var jqPromise = $.when($http.get(...));
// however - this will will fail inconsistently due to differences between
// jQuery and Angular promises
또한 가치에 주목 - 각도 약속 jQuery를이을 약속 소비 할 수 있습니다 :
$http.get(...).then(function(id){
return $.get("http://..."+id); // will work, though pointless because $http.get
}).then(function(result){
// contains result of $.get call here
});
이유는 무엇입니까? 예를 들어? –
예를 들어 $ q.when (thirdPartyPromise)를 사용하여 제 3 자 약속을 $ q/Q 약속으로 변환 할 수 있습니다. 그러나 내 약속을 사용하려면 도서관을 가져야합니다. 내 고객이 내 약속을 재사용 할 수 있도록 Q 또는 각도를 사용하도록 강요하고 싶지 않습니다. 그가 그것을 약속 한 양립성있는 약속으로 변환 할 수 있다면, 사용하는 데 덜 고통 스러울 것입니다. – phani
jQuery 약속이 아닌 minimalist promise 라이브러리를 사용하는 것이 좋습니다. jQuery 약속은 오류 처리에서 본질적으로 문제가 있습니다. –