Análisis de cuestiones clave de Promise

1. ¿Cómo modificar el estado de un objeto?
  resolver función resolver ('ok');
  rechazar función rechazar ('error');
  lanzar 'algo salió mal'

2. Promise puede especificar múltiples devoluciones de llamada
3. Cambie el estado de la promesa y especifique la función de devolución de llamada.
Es posible especificar la devolución de llamada primero y luego cambiar el estado (asincrónico) en circunstancias normales, pero también puede cambiar el estado primero y luego especificar la devolución de llamada (estado sincrónico).

let p = new Promise((resolve,reject) => {
    
    
		resolve("OK");
});

let result = p.then(value => {
    
      //result的结果为失败
	return new Promise((resolve,reject) => {
    
    
		rejected("error");
	});

4. Concatenar varias tareas

let p = new Promise((resolve,reject) => {
    
    
	setTimeout(() => {
    
    
		resolve("OK");
	},1000);
});

p.then(value => {
    
    
	return new Promise((resolve,reject) => {
    
    
		resolve("success");
	});
}).then(value => {
    
    
	console.log(value); //success
}).then(value => {
    
    
	console.log(value); //undefined
})

  El resultado de salida de console.log (valor) por segunda vez aquí no está definido, porque el resultado devuelto de then es una Promesa, y el estado de la Promesa está determinado por el valor de retorno del estado de función especificado por ella. aquí está el anterior entonces y el anterior El valor de retorno de entonces no se declara, por lo que se emite indefinido

5. La promesa de fenómeno de penetración anormal
  solo necesita especificar una devolución de llamada fallida al final, si hay una falla en la tarea en el medio, se informará una excepción al final

let p = new Promise((resolve,reject) => {
    
    
	setTimeout(() => {
    
    
		resolve("OK");
	},1000);
});

p.then(value => {
    
    
	return new Promise((resolve,reject) => {
    
    
		resolve("success");
	});
}).then(value => {
    
    
	console.log('111'); //success
}).then(value => {
    
    
	console.log('222'); //undefined
}).then(value => {
    
    
	console.log('333'); //undefined
}).catch(reason => {
    
    
	console.warn(reason);
})

6. Cómo terminar la cadena Promsie y
devolver una promesa con estado de relleno

let p = new Promise((resolve,reject) => {
    
    
	setTimeout(() => {
    
    
		resolve("OK");
	},1000);
});

p.then(value => {
    
    
	return new Promise((resolve,reject) => {
    
    
		resolve("success");
	});
}).then(value => {
    
    
	console.log('111'); 
	return new Promise(() => {
    
    });
}).then(value => {
    
    
	console.log('222'); 
}).then(value => {
    
    
	console.log('333'); 
}).catch(reason => {
    
    
	console.warn(reason);
})

Supongo que te gusta

Origin blog.csdn.net/sinat_33940108/article/details/114031138
Recomendado
Clasificación