una then sincronas promises promesas promesa hacer funciones encadenamiento como asincronia anidadas javascript node.js promise q

javascript - then - promesas typescript



devolver valor después de una promesa (2)

Tengo una función de JavaScript donde quiero devolver el valor que obtengo después del método de devolución. Más fácil de ver que explicar

function getValue(file){ var val; lookupValue(file).then(function(res){ val = res.val; } return val; }

¿Cuál es la mejor manera de hacer esto con una promesa? Según lo entiendo, el valor de return val volverá antes de que lookupValue lo haya hecho, pero no puedo return res.val ya que solo está volviendo de la función interna.


La mejor manera de hacerlo sería usar la función de retorno de promesa tal como es, como esta

lookupValue(file).then(function(res) { // Write the code which depends on the `res.val`, here });

La función que invoca una función asíncrona no puede esperar hasta que la función asíncrona devuelva un valor. Porque solo invoca la función asíncrona y ejecuta el resto del código en ella. Entonces, cuando una función asíncrona devuelve un valor, no será recibido por la misma función que lo invocó.

Entonces, la idea general es escribir el código que depende del valor de retorno de una función asíncrona, en la función asíncrona misma.


Use un patrón a lo largo de estas líneas:

function getValue(file) { return lookupValue(file); } getValue(''myFile.txt'').then(function(res) { // do whatever with res here });

(aunque esto es un poco redundante, estoy seguro de que su código real es más complicado)