w3schools trabajar sincronas promises promesas platzi funciones encadenamiento con javascript jquery promise

trabajar - ¿Cómo se implementan las promesas en Javascript sin hilos?



promises javascript w3schools (2)

El código nativo escrito en el navegador debajo de la capa de JavaScript tiende a tener subprocesos implementados muy bien. Como resultado, eso es todo lo que necesitas. Las promesas tienden a no ser necesarias para realizar el trabajo de cómputo real en JavaScript (aunque los trabajadores lo hacen más fácil) pero para cargar recursos externos y obtener devoluciones de llamada cuando están listas. JS Promises simplemente asigna devoluciones de llamada a esas funciones como "image.onLoad" y verifica si notifica otra función.

Hogan pudo haberlo resumido mejor: programación basada en eventos.

Recientemente, he estado viendo el concepto de Promesas implementado en AngularJS y JQuery.

He visto la implementación de Futures en Java como en el código a continuación, sin embargo, esto requiere que el concepto de grupos de subprocesos esté presente en lenguaje / plataforma. Sin embargo, no existe tal concepto de subprocesos en Javascript. ¿Cómo se implementan las promesas en Javascript entonces?

public class Futures1 { private static final ExecutorService pool = Executors .newFixedThreadPool(10); public static void main(String[] args) { Future<String> contentsFuture = null; try { contentsFuture = startDownloading(new URL("http://www.example.com")); } catch (MalformedURLException e) { e.printStackTrace(); } // other computation try { final String contents = contentsFuture.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } public static Future<String> startDownloading(final URL url) { return pool.submit(new Callable<String>() { @Override public String call() throws Exception { try (InputStream input = url.openStream()) { return IOUtils.toString(input, StandardCharsets.UTF_8); } } }); } }


Las promesas se inventaron para ayudar a administrar las operaciones asíncronas y las promesas en sí mismas no necesitan hilos para hacerlo. Son objetos que esencialmente proporcionan contabilidad para operaciones asíncronas: mantener marcas de estado, valores de resultados y escuchas para una transición de estado. Estas son todas las cosas que se pueden hacer fácilmente con Javascript de un solo hilo regular.

Entonces, mientras tenga operaciones asíncronas (sin embargo, esas operaciones están implementadas), puede beneficiarse de promesas y no necesita hilos para implementarlas.

Lo que parece que está viendo en su código Java es un código que ayuda a ejecutar tareas regulares en un hilo separado (para dar a las operaciones síncronas algún comportamiento de tipo asíncrono). Eso no es lo que hacen las promesas. Por lo tanto, si ya tiene operaciones asíncronas en su entorno, no necesitará este tipo de código para usar promesas.

Los ejemplos de elementos asíncronos en Javascript son prácticamente cualquier cosa en la que se registre un interés y el evento real ocurra en algún momento en el futuro y se pueda ejecutar otro código antes de que se active ese evento. En el entorno Javascript de un navegador, esto incluye cosas como setTimeout() , eventos de teclado, eventos de mouse, devoluciones de llamada de finalización de ajax, etc. Todos estos son eventos asíncronos. Usted registra un interés en ellos (registrando un detector de eventos o pasando una devolución de llamada a alguna función). Dentro de la implementación de Javascript, es probable que haya subprocesos que hagan que estos eventos asíncronos funcionen, pero esos subprocesos no necesitan estar expuestos al programador directamente para que la funcionalidad asíncrona esté allí. Por ejemplo, consulte esta publicación para ver cómo Javascript se las arregla para ejecutar llamadas ajax en segundo plano mientras se ejecutan otras cosas de Javascript. Todo lo que necesita saber es que su función de devolución de llamada se llamará un tiempo indeterminado en el futuro.

Entonces, en Javascript, las promesas se utilizan para administrar las operaciones asíncronas que ya están presentes en su entorno. No se usan para hacer que las cosas que no son asíncronas se vuelvan asíncronas (necesitarías hilos para hacer eso).

Tenga en cuenta que las promesas en sí mismas son solo herramientas de monitoreo, que se utilizan para monitorear las operaciones asíncronas existentes. Las promesas no son en realidad asíncronas, excepto por .then() que puede implementarse con una API setTimeout() como setTimeout() o setImmediate() o nextTick() . Las promesas no necesitan su propio código o hilos nativos. De hecho, si lo desea, puede escribir una implementación de promesa en Javascript de un solo hilo simple.