Ayudarle a encontrar los métodos prototipo de Promise, luego, tomarlos y finalmente
PD: He trabajado demasiadas horas extras la semana pasada y no tengo mucho tiempo libre para leer, ¡así que comencemos con este artículo!
El constructor de Promise implementa los métodos then, catch y finalmente en su prototipo, lo que significa que cada instancia de Promise tiene estas 3 funciones.
Tenga en cuenta también que el constructor de Promise implementa todos los métodos, carrera, rechazo, resolución, allSettled y cualquier == Estos métodos solo pertenecen al constructor de Promise y no se pueden llamar == en la instancia (. es decir, solo aparecerán en este formulario: por ejemplo, Promise.all ())
El método then() maneja el caso en el que la Promesa se acepta o rechaza.
then() puede aceptar hasta dos parámetros (funciones de devolución de llamada):
① onFulfilled
La función llamada cuando se cumple la Promesa. Esta función acepta un parámetro, el valor de cumplimiento.
Si el parámetro (que se refiere a onFulfilled) no es una función, entonces se reemplazará internamente con (x) =gt; x, que devolverá el resultado final de la Promesa tal como está (el valor de retorno). del método entonces se discutirá más adelante).
Nota: Los parámetros mencionados aquí no son los parámetros de la función == ¡incluido el caso sin parámetros ==! La siguiente figura ilustra estas 3 situaciones:
② onRejected
1) La función llamada cuando se rechaza la Promesa. Esta función acepta un parámetro, el motivo del rechazo.
2) Si el argumento (onRejected) no es una función, será reemplazado internamente por una función "Lanzador" (que arrojará el error recibido como argumento), lo que significa que informará un error.
Nota: De manera similar, el caso donde el parámetro no es una función también incluye el caso donde no hay parámetros:
Cuando la Promesa se cumple o se rechaza, la función de devolución será llamado asincrónicamente == devuelve un objeto Promise == Pero el valor de retorno es el mismo que el valor de la función de devolución de llamada en el método then() Si la función de devolución de llamada de then():
① no devuelve ninguno. valor. luego devuelve una Promesa que acepta un estado, y el valor del argumento de la función de devolución de llamada de aceptar estado no está definido.
Esto significa que los parámetros de la función de devolución de llamada que maneja la Promesa devuelta por then() no están definidos. Si no comprende esto, eche un vistazo al siguiente ejemplo:
El siguiente ejemplo puede ayudarlo a comprender la segunda oración (los siguientes ejemplos son similares y son ejemplos):
① Devuelve un valor. Luego devuelva una Promesa que acepte el estado y use el valor de retorno como valor de parámetro de la función de devolución de llamada que acepte el estado.
Similar a ①, excepto que el indefinido devuelto se convierte en el valor
③ Se genera un error. Luego devuelva la Promesa en el estado de rechazo y use el error arrojado como el valor de la función de devolución de llamada en el estado de rechazo
Los últimos tres son para devolver la Promesa en diferentes estados
④ Volver al estado de aceptación Promesa. Luego, también devuelva una Promesa en el estado aceptado y use el valor de la función de devolución de llamada del estado de aceptación de la Promesa como parámetro de la función de devolución de llamada del estado de aceptación de la Promesa devuelta
⑤ Devuelva una Promesa en el estado de rechazo.
Luego, también devuelva la Promesa en el estado rechazado y use el valor de la función de devolución de llamada del estado rechazado de la Promesa como parámetro de la función de devolución de llamada del estado rechazado de la Promesa devuelta
⑤ Devuelva la Promesa en el estado pendiente. Entonces, el estado de la Promesa devuelta tampoco está definido, y su estado final es el mismo que el estado final de la Promesa. Además, los parámetros de la función de devolución de llamada llamada cuando se convierte en el estado final son los mismos que los parámetros de la Promesa; Función de devolución de llamada llamada cuando la Promesa pasa al estado final
Ahora eche un vistazo al ejemplo de aplazar una devolución para obtener una Promesa pendiente. Obtendrá un estado pendiente sin valor de retorno, y después de 2 segundos verá el estado final con un valor de retorno
También puede intentar capturar los parámetros usando el método then():
El método catch() se utiliza para manejar la situación cuando se rechaza la Promesa. Es equivalente al método then(indefinido, onRejected)
El método catch() acepta una función de devolución de llamada que. es lo mismo que la devolución de llamada llamada cuando se finaliza la Promesa. Las funciones reciben los mismos parámetros.
catch() acepta un parámetro (función de devolución de llamada):
① onRejected
1) Función llamada cuando se rechaza la Promesa. Esta función requiere un parámetro, a saber, motivo (el motivo del rechazo)
2) Si el parámetro (onRejected) no es una función, también informará un error. Esto es similar al caso en el que el segundo parámetro del método then() no es una función.
Si la función de devolución de llamada en catch() arroja un error o devuelve una Promesa que falla, devolverá una Promesa en un estado rechazado; de lo contrario, devolverá una Promesa en un estado resuelto
referencia de llamada de cadena catch()