In es6, promise is used to create promise objects and perform asynchronous operations. The syntax is "const promise = new Promise((resolve,reject)=>{...})"; it holds asynchronous The status of the operation is used to represent different results of asynchronous operations.
The operating environment of this tutorial: Windows 10 system, ECMAScript version 6.0, Dell G3 computer.
Promise is an asynchronous programming solution provided in ES6. Promise itself is a constructor
typeof Promise // function
Generally we are developing New Promise() will be used to call the constructor and create a new Promise object
Create a Promise object for asynchronous operations
Promise is also a constructor and needs to use new keyword to create an instance, which accepts a function when created, and the function has two function type parameters:
resolve
reject
So the operation of creating a Promise is:
const promise = new Promise((resolve,reject)=>{...})
The two function parameters of resolve and reject determine the status change of the current Promise and how to handle the results of the asynchronous operation. They can both Pass the results of asynchronous operations out.
1. The state of the object is not affected by the outside world.
The Promise object is an asynchronous operation with three states: pending (in progress), fulfilled (successful) and rejected (failed).
Only the result of the asynchronous operation can determine which state the Promise is, and no other operation can change this state
2. Once the Promise state changes, there will be no more changes, and this result can be obtained at any time.
There are only two possibilities for the state of a Promise object to change: from pending to fulfilled or from pending to rejected. As long as these two situations occur, the status will not change and will always maintain this result. This is called resolved. If the change has already occurred, if you add a callback function to the Promise object, you will get the result immediately. This is different from an event. The characteristic of an event is that if you miss it and listen again, you will not get the result.
The advantage of using Promise is that when processing asynchronous programs, asynchronous operations will be Queuing, executing in the expected order, and returning expected results, so that even for multiple asynchronous operations, Promise can be conveniently used for chain calls
3. Promise also has some shortcomings.
First of all, Promise cannot be canceled. Once it is created, it will be executed immediately and cannot be canceled midway. Secondly, if you do not set a callback function, errors thrown internally by Promise will not be reflected externally. Third, when it is in the pending state, it is impossible to know which stage the current progress is (just starting or about to be completed)
The so-called Promise is simply a container, which holds something that will not end until the future. The result of an event (usually an asynchronous operation).
ES6 stipulates that the Promise object is a constructor used to generate Promise instances.
The following code creates a Promise instance.
const promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
The Promise constructor accepts a function as a parameter. The two parameters of the function are resolve and reject. They are two functions provided by the JavaScript engine and do not need to be deployed by yourself.
The function of the resolve function is to change the status of the Promise object from "unfinished" to "successful" (that is, from pending to resolved). It is called when the asynchronous operation is successful, and the result of the asynchronous operation is Pass it out as a parameter; the function of the reject function is to change the state of the Promise object from "uncompleted" to "failed" (that is, from pending to rejected), and is called when the asynchronous operation fails, and the error reported by the asynchronous operation is , passed as a parameter.
After the Promise instance is generated, you can use the then method to specify the callback functions for the resolved state and rejected state respectively.
promise.then(function(value) { // success }, function(error) { // failure });
Thethen method can accept two callback functions as parameters. The first callback function is called when the state of the Promise object becomes resolved, and the second callback function is called when the state of the Promise object becomes rejected. Among them, the second function is optional and does not have to be provided. Both functions accept the value passed by the Promise object as a parameter.
【Related recommendations: javascript video tutorial, web front-end】
The above is the detailed content of What is the use of promise in es6. For more information, please follow other related articles on the PHP Chinese website!