Manejo de errores con async y await

Manejo de errores con async y await

sync/await es la solución definitiva a la asincronía basada en Promise propuesta por ES7.

Para resolver el problema de las devoluciones de llamada asincrónicas en el verdadero sentido, el proceso sincrónico expresa operaciones asincrónicas. En esencia, async es el azúcar sintáctico de Generator. Async y await se utilizan para optimizar el uso de Generator, y no hay necesidad de llamar activamente Siguiente.

  1. No hay necesidad de llamar al siguiente método como Generator.When await espera, la operación asincrónica actual se completa y ejecuta.
  2. Una función modificada por async es una función asíncrona que siempre devuelve un objeto Promise, y el método then se puede usar para el siguiente paso.
  3. async reemplaza el asterisco * de la función Generador, await reemplaza el rendimiento del Generador
async function foo(){
    
    
	await 异步操作;
	await 异步操作;
}

foo(); // 注意: async函数, 总会返回一个Promise对象

Ejemplo: utilice setTimeout con Promise+async+await al definir operaciones asincrónicas

1. Defina una función Promise para realizar operaciones asíncronas

function timeout(seconds) {
    
     // 延迟方法
	return new Promise(resolve => {
    
    
		setTimeout(resolve, seconds * 1000);
	})
}

2. Usa asíncrono y espera

async function asyncPrint(value) {
    
    
	console.log('函数执行---');
	await timeout(2);
	console.log('2秒后执行?');
	await timeout(4);
	console.log("4秒后执行?");
	console.log(value);
}
asyncPrint('hello async');

console.log("主线程代码----------");

Cuando la expresión siguiente await devuelve un mensaje de error de rechazo, await no continuará ejecutándose hacia abajo

Si await le sigue un objeto de promesa, aceptará directamente el resultado devuelto por resolve

await debe usarse con objetos Promise;

Comportamiento de notificación de errores:

        function timeout(seconds) {
    
     // 延迟方法
	        return new Promise((resolve,reject) => {
    
    
		    setTimeout(reject, seconds * 1000);
	        })
        }   

        const p = async ()=>{
    
    
        let aaa = await timeout(1)
        console.log(aaa)
        }
        p()

inserte la descripción de la imagen aquí
Este tipo de error usa await para reportar el error directamente, lo que afecta la posterior impresión de aaa, lo que significa que afecta la ejecución del siguiente código.
También quiero recopilar errores:
1. Try/catch
2. Seguido de un .catch()
3. Envuelva una capa de procesamiento de promesas

1.intentar/atrapar

        function timeout(seconds) {
    
     // 延迟方法
	        return new Promise((resolve,reject) => {
    
    
		    setTimeout(reject, seconds * 1000);
	        })
        }   

        const p = async ()=>{
    
    
            try{
    
    
                let aaa = await timeout(1)
                console.log(aaa)
            }catch{
    
    
                 console.log("error")
            }
        }
        p()

inserte la descripción de la imagen aquí

2. Seguido de un .catch()

        function timeout(seconds) {
    
     // 延迟方法
	        return new Promise((resolve,reject) => {
    
    
		    setTimeout(reject, seconds * 1000);
	        })
        }   

        const p = async ()=>{
    
    
            let aaa = await timeout(1).catch(_=>'error')
            console.log(aaa)
        }
        p()

3. El embalaje exterior es una capa de procesamiento prometedor.

        const returnNewPro = (promise) => promise.then(res=>[null,res]).catch(err=>[err,null])
      
        function timeout(seconds) {
    
     // 延迟方法
	        return new Promise((resolve,reject) => {
    
    
		    setTimeout(reject, seconds * 1000);
	        })
        }   

        const p = async ()=>{
    
    
            let aaa = await returnNewPro(timeout(1))
            console.log(aaa)
        }
        p()

inserte la descripción de la imagen aquí
Los tres métodos anteriores se utilizan para recopilar la información de error de async/await para evitar que el código se bloquee.

Otros artículos

1. Los ganchos implementan toDoList
2. Los ganchos implementan la suma izquierda y la resta derecha
3. React implementa la adición de un cuadro de entrada de varias líneas (haga clic en una fila para agregar una fila)
4. El salto de página de React cancela todas las solicitudes en la página anterior
5. React coopera con la sesión de verificación de intercepción de solicitud de axios, 403 salta a la página de inicio de sesión
6. Los ganchos usan createStore, Provider, useSelector, useDispatch para implementar la función de conexión
7. El problema de la asincronía circular en el nodo ['solución']_Debido al bucle del mapa y para bucle con asíncrono, en espera de soporte
8. Promete el administrador de operaciones asíncronas de js

Liuqing

见贤思齐焉,见不贤内自省

Opinión personal, corrígeme si me equivoco.

Supongo que te gusta

Origin blog.csdn.net/qq_43291759/article/details/124022281
Recomendado
Clasificación