Cho dù đó là Lời hứa ES6 hay Lời hứa bluebird, Lời hứa Q, v.v.
Làm cách nào để kiểm tra xem liệu một đối tượng đã cho có phải là Lời hứa không?
.then
phương thức không phải là Lời hứa, không hành xử như một Lời hứa và không có ý định sử dụng như một Lời hứa. Kiểm tra một .then
phương thức chỉ cho bạn biết rằng nếu đối tượng không có .then
phương thức, thì bạn không có Promise. Điều ngược lại - rằng sự tồn tại của một .then
phương pháp có nghĩa là bạn làm có một Promise - không hẳn đã đúng.
.then
phương thức hay không. Vâng, điều đó có khả năng cho các kết quả dương tính giả, nhưng đó là giả định rằng tất cả các thư viện hứa hẹn đều dựa vào (vì đó là tất cả những gì họ có thể dựa vào). Sự thay thế duy nhất theo như tôi có thể thấy là lấy lời đề nghị của Benjamin Gruenbaum và chạy nó thông qua bộ thử nghiệm lời hứa. Nhưng điều đó không thực tế đối với mã sản xuất thực tế.
.then
phương pháp, nhưng điều đó sẽ không cho bạn biết rằng những gì bạn có là một Lời hứa dứt khoát. Tất cả những gì bạn sẽ biết vào thời điểm đó là bạn có một cái gì đó phơi bày một.then
phương thức, như một Lời hứa.