2013-09-23 43 views
6

Tôi có một số thư viện JavaScript cũ sử dụng jQuery promises làm đối tượng trả về từ các cuộc gọi hàm. Tôi hiện đang sử dụng AngularJS sử dụng số $q service (lấy cảm hứng từ số Q library). Có ai có một số mã JavaScript chung để làm cho hai triển khai thực hiện lời hứa tương thích khác nhau, sao cho các lời hứa jQuery có thể được sử dụng như thể nó hứa hẹn ở đâu? Hoặc một cái gì đó tương tự?

+0

Cảm ơn bạn đã trả lời. Tôi biết điều này, nhưng nó cồng kềnh để áp dụng nó ở khắp mọi nơi. Câu trả lời dưới đây là nhiều hơn những gì tôi (và có lẽ những người khác) đang tìm kiếm. –

Trả lời

21

Lời hứa của bên thứ ba có thể được gói với $q.when(thirdPartyPromise) để được chuyển đổi thành lời hứa $ q. Khi giải quyết thirdPartyPromise, lời hứa $ q sẽ giải quyết cho phù hợp và $scope.$apply() được gọi.

+0

Thanx! Bỏ lỡ một trong các tài liệu. –

+2

Tôi rất vui vì $ q cũng đã chọn từ Q. Bí quyết là bất cứ thứ gì thực hiện 'lời hứa. (Cb, eb)' có thể được truyền sang lời hứa của một kiểu khác, bỏ qua giá trị trả về. Nó được gọi là “tính khả thi”. –

+0

@KrisKowal, nếu trình bao bọc '$ q.when()', thì có lẽ như vậy sẽ là dạng cưỡng chế đơn giản '$ q (thirdPartyPromise)'? –

Các vấn đề liên quan