Nói chung, giải quyết có nghĩa là EITHER thành công hay thất bại. Đó là những gì gây nên sự kêu gọi của các hành động then
. Nó có thể xảy ra chính xác một lần cho bất kỳ lời hứa nào.
thực hiện có nghĩa là "giải quyết" thành công. Điều đó sẽ kích hoạt các cuộc gọi lại thành công trong các hành động then
. Đối tác "hoàn thành" cho thất bại là từ chối. Từ góc độ khác, bạn có thể phân loại trạng thái của bất kỳ lời hứa nào tại một thời điểm cụ thể trong thời gian "chưa được giải quyết" (đôi khi còn được gọi là đang chờ xử lý) hoặc "đã giải quyết" và "đã giải quyết" có các trạng thái con của "đã hoàn thành" và "bị từ chối". Lời hứa trong trạng thái "đã hoàn thành" có giá trị và lời hứa trong trạng thái "bị từ chối" có lý do lý do.
Các phương pháp cụ thể trong từng API được sử dụng để thể hiện các khái niệm này khác nhau. Và thật không may, có nhiều bài đăng trên blog và tài liệu ở đó gây nhầm lẫn các điều khoản này, đặc biệt bằng cách sử dụng "fullfill" khi chúng có nghĩa là "giải quyết" hoặc ngược lại.
Q
Tôi không biết Q rất tốt, nhưng có vẻ như phương pháp resolve
của nó thực sự đáp ứng lời hứa (nhấn mạnh thêm):
Calling quyết tâm với một tổ chức phi lời hứa nguyên nhân giá trị hứa hẹn là được đáp ứng với giá trị đó.
Tuy nhiên, bạn cũng có thể gọi số deferred.resolve
với lời hứa, trong trường hợp lời hứa đầu tiên ít nhiều giả định trạng thái lời hứa đã được truyền. Ví dụ: nếu lời hứa đã qua được ở trạng thái "đang chờ xử lý", lời hứa sẽ thông qua trạng thái đang chờ xử lý của lời hứa đã qua. Điều đó ngụ ý ngữ nghĩa hơi kỳ quặc rằng một phương thức có tên là resolve
thực sự không giải quyết được lời hứa.
Nguồn
2013-08-18 02:39:22
Tôi không thấy phương thức 'hoàn thành' trong tài liệu' q'. https://github.com/kriskowal/q/wiki/API-Reference – Barmar
xem thêm [Thuật ngữ chính xác cho lời hứa javascript] là gì (http://stackoverflow.com/a/29269515/1048572) – Bergi