"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¡No es tan difícil! Para entender `Promise` en javascript

¡No es tan difícil! Para entender `Promise` en javascript

Publicado el 2024-11-01
Navegar:261

It’s not that hard! To understand `Promise` in javascript

El contenido de este artículo es muy adecuado para principiantes en Javascript. Se describirá en un lenguaje sencillo y fácil de entender, para que no tengas que preocuparte por no entenderlo.

Promesa, ¿por qué existes?

La promesa es un punto de conocimiento indispensable al aprender el lenguaje Javascript moderno. Mucha gente se siente confundida al leerlo. El motivo principal se puede resumir en una frase:

El código ya no se ejecuta de arriba a abajo.

Normalmente, el código que escribimos se ejecuta de forma secuencial, por ejemplo, escribimos un código que cuenta del 1 al 3.

console.log(1)
console.log(2)
console.log(3)

Presione F12 para abrir la consola de nuestro navegador, copie el código anterior en él, presione Enter y podrá ver que los números del 1 al 3 se imprimen en orden.

1
2
3

Ahora, si tenemos el requisito de que el orden de los códigos no se pueda cambiar, pero el orden de las impresiones finales debe ser independiente del orden de los códigos, ¿podemos hacer esto?

Imaginemos que si 1, 2 y 3 son impresos por tres personas respectivamente, entonces será muy simple. Solo necesitamos indicarles la tarea de imprimir números al mismo tiempo, y el orden de las impresiones solo estará relacionado con el tiempo de ejecución de las tareas.

Promesa, el efecto mágico

Entonces, ¿cómo asignamos la tarea de impresión a tres personas? Aquí es donde se utiliza Promesa. Al crear un nuevo objeto Promise, podemos asignar una sección de código a un nuevo "proceso" en lugar de ejecutarlo en el "proceso" actual. Tenga en cuenta que el "proceso" aquí no es el mismo que el proceso del sistema operativo del que hablamos a menudo, sino que es solo un concepto abstracto que representa una unidad virtual que ejecuta código en secuencia.

Promesa, instrucciones de montaje.

Como acabamos de decir, Promise puede considerarse como un nuevo "proceso", por lo que si queremos que ejecute cualquier código, podemos envolverlo en una función y entregárselo. De esta forma, el código no se ejecutará inmediatamente.

Promise también nos proporciona dos funciones, una es resolver y la otra es rechazar, a las que podemos llamar cuando la tarea se completa y falla respectivamente. Estas dos funciones se pasan al interno de Promise como parámetros. Entonces, podemos armar uno como este:

Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(1)
      resolve()
    }, 300)
  }
)

Aquí usamos setTimeout para simular una tarea que requiere mucho tiempo. En escenarios reales, esta tarea puede consistir en leer un archivo, solicitar una interfaz de red o esperar la entrada del usuario. Cuando se completa la tarea, llamamos a la función resolve para indicar que la tarea se ha completado.

código completo

Luego, seguimos el mismo método, y Promise cuando ensamblamos los otros dos, solo necesitamos proporcionarles diferentes números de impresión y el tiempo requerido para la tarea. Finalmente, el código completo es así, puedes intentar copiarlo en la consola y probarlo.

Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(1)
      resolve()
    }, 300)
  }
)
new Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(2)
      resolve()
    }, 200)
  }
)
new Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(3)
      resolve()
    }, 100)
  }
)

Finalmente, el orden en el que se imprimen los números está relacionado con el tiempo de ejecución de las tareas:

3
2
1

Promesa, modelo de concurrencia

La programación concurrente trata sobre cómo simular la ejecución de una gran cantidad de tareas simultáneamente en una cantidad limitada de núcleos de CPU. Promise en Javascript proporciona una forma cómoda y rápida de programación concurrente, así como un conjunto de especificaciones para manejar valores de retorno y valores de error. Después de comprender y familiarizarnos con esta especificación, podemos mejorar en gran medida la eficiencia en el manejo de tareas simultáneas.

Declaración de liberación Este artículo se reproduce en: https://dev.to/linjiezhang/its-not-that-hard-to-oderstand-promise-in-javascript-3kk3?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3