The Terminology of JavaScript Promises
Understanding the terminology surrounding JavaScript promises can be challenging. According to the Promises/A specification and ES6, promises have three distinct states:
Settled, Resolved, and Fulfilled
The term "settled" refers to either fulfilled or rejected, collectively, implying that the promise is no longer pending. However, "resolved" is a complex concept.
It can sometimes be used interchangeably with "fulfilled," but a more precise interpretation is that "resolve" is the act of setting the promise's fate to either fulfilled or rejected. The "resolution" of a promise signifies that it has exited the pending state.
Recursion and Resolve
The Promise Resolution Procedure is recursive. Resolving a promise with a basic value fulfills it, while resolving it with another promise adopts the state of that promise. This can lead to scenarios where a promise is resolved but its final state is undetermined. In such cases, the promise is referred to as "resolved" in the sense that its destiny is no longer ambiguous, but its actual state may still be pending.
Deferring
Deferring a result involves providing an asynchronous promise for the result instead of returning the result directly. This process also returns a deferred rejection instead of throwing synchronously.
In certain libraries, such as Q, the term "defer" refers to the method that constructs a Deferred object. It is important to note that variable names may not always accurately reflect their intended meaning, and "defer" may also be an abbreviation for "deferredObject."
The above is the detailed content of What are the different states of a JavaScript promise and how are they related to terms like 'settled,' 'resolved,' and 'deferred'?. For more information, please follow other related articles on the PHP Chinese website!