Resumen de uso del objeto Promesa de ES6


Promise se utiliza para entregar mensajes de operaciones asincrónicas y el objeto Promise representa una operación asincrónica.

características

1. El estado de un objeto Promise no se ve afectado por el mundo exterior, es decir, solo el resultado de una operación asincrónica puede cambiar su estado, y otras operaciones no pueden cambiar este estado, hay tres estados en total:

  1. pendiente (esperando): el estado inicial, no un estado de éxito o fracaso.
  2. cumplida: significa que la operación se completó con éxito.
  3. rechazado (rechazado): significa que la operación falló.

2. Solo hay dos posibilidades para cambiar el estado: pendiente→cumplido y pendiente→rechazado, una vez que el estado cambia, no volverá a cambiar.

crear

Para crear un objeto de promesa, puede usar new para llamar al constructor de Promise para crear una instancia:

var promise = new Promise(function(resolve, reject) {
    
    
    // 异步处理
    // 处理结束后、调用resolve 或 reject
});

El constructor de Promise toma un parámetro y una devolución de llamada con dos parámetros resolver (resolver) y rechazar (rechazar). En la devolución de llamada, haga algo (por ejemplo, asíncrono) y llame a resolver si todo está bien; de lo contrario, llame a rechazar.
Se puede entender mirando el ejemplo real.

ejemplo práctico

function get(url, params = {
    
    }) {
    
    
    return new Promise((resolve, reject) => {
    
    
        axios.get(url, {
    
    
            params: params
        })
            .then(response => {
    
    
                resolve(response.data);
            })
            .catch(err => {
    
    
                reject(err)
            })
    })
}

Aquí, primero se construye un objeto de promesa y el método asincrónico es utilizar axios para acceder a la información de fondo. El método axios.get puede acceder correctamente (devolver información normal) o fallar en el acceso (devolver información de excepción). En este momento, ya sea exitoso o fallido, queremos pasar la información, por lo tanto, si el acceso es exitoso, use el método de resolución para pasar la información exitosa, y si el acceso falla, use el método de rechazo para pasar. sacar la información fallida. Los parámetros aceptados por estos dos métodos pueden tener cualquier valor (por supuesto, tampoco puede pasar ningún parámetro).
Se puede llamar al método promesa.then() para el objeto de promesa del que se ha creado una instancia, y los métodos de resolución y rechazo se pasan como devoluciones de llamada.
promet.then() es el método de promesas más utilizado.

promise.then(onFulfilled, onRejected)

Promise simplifica el manejo de errores. También podemos escribir el código anterior de esta manera:

promise.then(onFulfilled).catch(onRejected)

El siguiente paso es llamar al método get:

get(xxxx,{
    
    })
	.then(result => {
    
     do something })
	.catch(err=> {
    
     do something });

Aquí, al llamar al método get se obtiene un objeto Promise y luego se llama al método then, donde el resultado es la respuesta.datos pasados ​​en resolve(response.data); y al llamar al método catch, err es el error pasado en rechazar(err). ).

Método Promise.resolve, método Promise.reject

Para convertir un objeto existente en un objeto Promise, puede utilizar el método Promise.resolve o el método Promise.reject:

Promise.resolve('fyk').then(function(value){
    
    
    console.log(value); // 打印出fyk
});

El objeto Promise transformado por resolución entra directamente en el estado cumplido (completado);

Promise.reject('fyk').catch(function(error){
    
    
    console.log(error);// 打印出fyk
});

El objeto Promise transformado por rechazo entra directamente en el estado rechazado (rechazado);

Supongo que te gusta

Origin blog.csdn.net/fyk844645164/article/details/100551016
Recomendado
Clasificación