Tuyên bố từ chối: Lời hứa jQuery không chơi đẹp với các thư viện khác - tại
tất cả. jQuery sẽ không tự đồng hóa các lời hứa của bên thứ ba khác. Angular $ q hứa hẹn mặt khác - sẽ, do đó, bất cứ khi nào bạn có sự lựa chọn, đồng hóa lời hứa jQuery vào một lời hứa Angular và không ngược lại. (Tất cả những thay đổi này trong jQuery 3.0, nếu bạn thấy tuyên bố từ chối trách nhiệm này và 3.0 đã được phát hành - vui lòng để lại nhận xét).
Chuyển đổi một lời hứa jQuery vào một lời hứa góc:
var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...));
Chuyển đổi một lời hứa jQuery để một lời hứa mẹ đẻ hoặc Bluebird:
var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..));
Chuyển đổi một Promises/A + khiếu nại hứa như $ q kiễu góc lời hứa hoặc lời hứa Bluebird hoặc lời hứa gốc về lời hứa 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
Cũng đáng chú ý - lời hứa góc có thể tiêu thụ jQuery hứa hẹn:
$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
});
Nguồn
2014-07-07 13:13:01
Tại sao? Có một ví dụ? Ví dụ: –
Ví dụ: bạn có thể chuyển đổi bất kỳ lời hứa của bên thứ ba nào thành lời hứa $ q/Q bằng $ q.when (thirdPartyPromise). Nhưng nên có thư viện đó để sử dụng lời hứa của tôi. Tôi không muốn ép khách hàng của tôi sử dụng Q hoặc góc cạnh để anh ấy có thể tái sử dụng lời hứa của tôi. Nếu tôi có thể chuyển đổi nó thành lời hứa tương thích, anh ta muốn nó sẽ ít đau đớn hơn để sử dụng. – phani
Bạn nên cân nhắc sử dụng thư viện lời hứa tối giản chứ không phải các lời hứa jQuery, các lời hứa jQuery vốn đã có vấn đề trong xử lý lỗi. –