Không, đó là không ai. Đó là discussed nhưng thông số kỹ thuật là tối thiểu. Nó không bao gồm một loạt các chức năng khác. Nó được thiết kế để tương thích tốt với các lời hứa của thư viện và cung cấp chức năng đơn giản.
Here is a correct polyfill of that proposal originally made by StefPanner.
Hơn nữa, tôi không đồng ý với số
hiện tại
bây giờ đã xóa các câu trả lời tự thêm vì chúng tất cả đều làm sai (như một thuộc tính có thể đếm được - không vui). Thậm chí nếu chúng ta bỏ qua những gì nó làm cho các giá trị trả về và trạng thái lỗi của lời hứa trả lại. Cách dự định để mở rộng các lời hứa gốc là bằng cách phân lớp chúng, thật đáng buồn là không có trình duyệt nào hỗ trợ điều này, vì vậy chúng tôi sẽ phải đợi.
Thay vì rối tung với nguyên mẫu bản địa, chúng ta nên sử dụng một mô hình khác nhau:
openDb().then(foo).then(bar).finally(close).then(more);
là nhạy cảm đối với chúng ta quên để gọi gần, ngay cả nếu chúng ta mở nó 100 lần trong ứng dụng của chúng tôi, quên để đóng nó thậm chí một lần vẫn có thể tàn phá. Mặt khác - chúng ta có thể sử dụng mô hình, tiêu hủy mà một số thư viện hứa hẹn cung cấp được xây dựng trong chính chúng ta:
openDb(function(db){
return foo(db).then(bar);// chain here
}).then(more);
Về cơ bản - mô hình này có nghĩa là thay vì có openDB
trở lại một lời hứa - chúng tôi có mất một hàm và trở lại một lời hứa, khi chức năng được chạy, nếu nó trả về một lời hứa, chúng tôi chờ đợi lời hứa đó để giải quyết. Nó trông giống như sau:
function openDb(withDb){
return justOpenWithoutCleanUp().
then(withDb).
then(clean, function(e){ clean(); throw e; }); // note the rethrow
}
Nguồn
2014-10-29 10:28:02
Tôi thấy bây giờ chỉ có sau đó và các phương pháp đánh bắt https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise Vì vậy, có lẽ không có cách nào (hoặc mở rộng nguyên mẫu để thực hiện điều này) –
jQuery.Deferred(). Sau đó, làm thế nào để giải quyết với nhiều tham số http://stackoverflow.com/questions/24703887/jquery-deferred-then-how-to-resolve -with-multiple-parameters1 – zavg
Khi Benjamin trả lời - không. Thats lý do tại sao tôi thường đi với https://github.com/petkaantonov/bluebird trong trình duyệt và nó tham gia, tất cả, và tất cả các phương pháp khác. Tất nhiên nó không phải là bản địa, nhưng nó là giải pháp cho rất nhiều vấn đề về lời hứa cộng với sự quảng bá. – Jarema