restituire un valore atteso ritorna una Promessa? (es7 asincrono/attesa)

const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));

async function wrapper() {
    let someString = await ret();
    return someString;
}

console.log( wrapper() );

registra Promise { <pending> }; Perché restituisce una Promessa invece di 'somestring'?

sto usando il preset Babel ES7 per compilarlo.


En title : Returning an awaited value returns a Promise? (es7 async/await)

14 Comments:

  1. perché è una funzione asincrona. questa è la differenza tra la funzione asincrona e quella normale.
  2. penso che si possono ottenere i benefici dell'async / attendere dall'interno di una funzione async. se si console.log(someString) all'interno della funzione wrapper() o all'interno di qualsiasi altra funzione async, si otterrà il valore somestring.
  3. @estus Allora perché la registrazione someString subito dopo l'attesa di output il valore corretto?
  4. le funzioni asincrone restituiscono le promesse. per fare quello che vuoi, prova qualcosa di simile

    wrapper().then(someString => console.log(someString));
    

    si può anche attendere su wrapper() come altre promesse dal contesto di un'altra funzione async.

    console.log(await wrapper());
    
    1. sei sicuro di quel secondo esempio lì? ottengo gli errori di sintassi con quello.
    1. @JakeWilson Deve essere all'interno di una funzione asincrona. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#Examples
  5. perché si await per esso. il risultato dell'esecuzione delle funzioni asincrone è sempre una promessa. potete aspettarlo se siete all'interno di un'altra funzione async o disavvolgere il risultato con .then(...) se non siete.
  6. se vuoi che la tua funzione async restituisca immediatamente un valore puoi usare Promise.resolve (thevalue)

    async waitForSomething() {
        const somevalue = await waitForSomethingElse()
        console.log(somevalue)
    
        return Promise.resolve(somevalue)
    }
    

    IMO l'asincrono attendere parole chiave bisogno di un altro, risolvere

    sarebbe bello scrivere il ritorno risolvere 'ciao'

    o semplicemente o semplicemente

    resolve 'hello'
    
    1. beh, nel frattempo ho scoperto che si può solo restituire una variabile da un metodo asincrono, che fa la stessa cosa come chiamare risolvere con la variabile

More similar articles:

  • l'async non dovrebbe restituire una Promessa senza includere esplicitamente il valore di ritorno in una Promessa?
  • la proprietà Object ritorna inizialmente non definita, ma dopo la ridefinizione ritorna il valore atteso
  • come ottenere dati asincroni da un oggetto 'get ()' senza restituire una Promessa
  • la funzione async non ritorna mai
  • validatore atteso per restituire Promessa o Osservabile
  • funzione FireBase: funzione restituita indefinito, atteso Promessa o valore
  • FireBase Cloud Functions "Funzione restituita indefinito, atteso Promessa o valore"
  • è possibile avvolgere la funzione come la Posizione d'orologio di fessura () in una Promessa?
  • JavaScript asincrono/attendere la versione rispetto alla versione Promessa della funzione non funziona
  • la funzione async non ritorna mai in attesa di una Promessa annidata
  • request-prometta il lancio dell'errore non atteso dell'identificatore quando usando attendono
  • FireBase Funzione restituita indefinito, atteso Promessa o valore
  • async attendere Jquery ajax callback?
  • la funzione async/attait non aspetta che setTimeout finisca
  • JS usa asincrono come default in importazione
  • come avere atteso loop completo prima del ritorno in funzione asincrona
  • come attendere Promessa senza dichiarare asincrono
  • validatore asincrono Throw atteso per restituire Promessa o Osservabile
  • es 2017: async function vs AsyncFunction (oggetto) vs async function expression
  • JavaScript asincrono/attendere non correttamente?
  • metodo atteso ritorna collezione vuota a meno che non uso breakpoint all'interno
  • riutilizzo di letterali di oggetti creati mediante destrutturazione
  • ES2017 - Async vs. Yield
  • qual è il modo giusto per gestire le funzioni di sincronizzazione per caricare un'immagine .gif?
  • eccezione quando si ritorna Task vs risultato atteso di ritorno
  • correggere Prova... Cattura sintassi utilizzando Async/Await
  • come usare async/attend in Vue.js?
  • come usare ES8 asincrono/attendere con i flussi?
  • come posso rilevare errori asincroni non promessi? (reagire a quell'errore specifico)
  • async lambda non ritorna prima dei ritorni del metodo atteso