Angular $ q.when hoạt động như thế nào?


95

Ai đó có thể giải thích cho tôi cách $q.whenhoạt động trong AngularJS không? Tôi đang cố gắng phân tích cách thức $httphoạt động và nhận thấy điều này:

var promise = $q.when(config);

Và đây là đối tượng cấu hình từ bảng điều khiển Chrome:

Object {transformRequest: Array[1], transformResponse: Array[1], cache: Object, method: "GET", url: "/schedule/month_index.html"…}
cache: Object
headers: Object
method: "GET"
transformRequest: Array[1]
transformResponse: Array[1]
url: "/schedule/month_index.html"
__proto__: Object

Chuyện gì xảy ra tiếp theo? Làm thế nào đối tượng này được giải quyết hoặc bị từ chối?


$ q cụ hứa mẫu wrapper chỉ đơn giản của nó xung quanh callbacks trong javascript Vì vậy, khi gọi lại là thành công bị sa thải những lời hứa được giải quyết
Ajay Beniwal

1
@Ajaybeniwal, nhưng trong trường hợp này đối tượng được chuyển, không gọi lại. Làm thế nào nó giải quyết / từ chối trong trường hợp khi đối tượng được truyền, không được gọi lại?
ĐẶT

Câu trả lời:


113

Gọi điện $q.whencó một lời hứa hoặc bất kỳ loại nào khác, nếu nó không phải là một lời hứa thì nó sẽ gói nó trong một lời hứa và giải quyết cuộc gọi. Nếu bạn chuyển một giá trị cho nó thì nó sẽ không bao giờ bị từ chối.

Từ các tài liệu:

Gói một đối tượng có thể là một giá trị hoặc một (bên thứ 3) sau đó có thể hứa thành một lời hứa $ q. Điều này hữu ích khi bạn đang xử lý một đối tượng có thể có hoặc có thể không phải là lời hứa, hoặc nếu lời hứa đến từ một nguồn không thể tin cậy được.


If you pass a value to it- nhưng nếu tôi chuyển đối tượng thì sao?
SET

11
giá trị, đối tượng, mảng nó đều giống nhau.
Derek Ekins

3
điều gì sẽ xảy ra nếu tôi truyền một hàm trả về một lời hứa? nó có nghĩa là sau đó gọi lại của nó sẽ được thông qua thông số kết quả hứa gửi theo quyết định?
Onur Topal

3
Xin chào, khi bạn nói truyền một hàm, bạn có nghĩa là với tư cách là một đối tượng hàm:, $q.when(myfunc)hay bằng cách gọi hàm mà bạn truyền vào $q.when(myfunc()):? Tôi không biết chính xác cái trước sẽ làm gì ... cái sau sẽ gọi myfunc()đầu tiên và chuyển giá trị hứa | được trả về cho .when().
jrista
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.