2013-07-04 38 views
15

Tôi có mô hình Dữ liệu Ember. Tôi muốn làm một số xử lý trong lời hứa .then một khi nó đã được nạp và sau đó trả về cùng một mô hình như một lời hứa. Đây là những gì tôi có ngay bây giờ. Làm thế nào để bọc lên đối tượng trả về như một lời hứa để các lời hứa khác có thể bị xích?Làm cách nào để tạo lời hứa trong Ember.js cho mô hình dữ liệu Ember

App.Member.find(1).then(function(member){ 

    //do some processing here 
    return member; // Does this need to be wrapped as a promise? 

} 
+0

Khi bạn trả lại kết quả không phải là một 'lời hứa' khác từ bất kỳ 'có thể' nào thì nó được coi là đã được giải quyết. Vì vậy, chỉ cần trở về 'thành viên' là tương đương với gói nó bên trong một' lời hứa' và tự gọi 'giải quyết'. Bạn chỉ cần một trình bao bọc 'lời hứa' nếu' thành viên' được lấy bởi một thao tác không đồng bộ khác. –

+0

Điều đó là tốt để biết .. Cảm ơn! – ianpetzer

Trả lời

32

Về cơ bản bạn có thể tạo một lời hứa như thế này:

var promise = new Ember.RSVP.Promise(function(resolve, reject){ 
    // succeed 
    resolve(value); 
    // or reject 
    reject(error); 
}); 

và sau đó bạn có thể sử dụng then tài sản cho chuỗi nó tiếp tục:

promise.then(function(value) { 
    // success 
}, function(value) { 
    // failure 
}); 

Bạn tôi cũng có thể có một cái nhìn tại này jsbin cho thấy cách chúng có thể được triển khai. Và this cũng rất hữu ích.

Hy vọng điều đó sẽ hữu ích.

+0

Thats tuyệt vời .. Cảm ơn. – ianpetzer

+0

Hey shouldn giải quyết, từ chối là một phần của sau đó ?? hoặc tôi hiểu sai. Tôi có nghĩa là sự khác biệt giữa giải quyết, từ chối và thành công, thất bại trong lời hứa (chức năng (giải quyết, từ chối) {}) là gì (thành công, thất bại); Tôi giả sử một khi lời hứa trả về true sau đó thành công được gọi trong "sau đó", nếu nó trả về false thì thất bại được gọi? – wallop

+0

Không thể sử dụng các chức năng model.get hoặc model.set http://jsbin.com/furukuyetu/1/edit – suryakrish

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