Sto cercando di capire meglio cosa sia tecnicamente un async function
in JavaScript, anche se fondamentalmente so come usarli.differenza tecnica tra la funzione asincrona di ES7 e una promessa?
Molte introduzioni a asincrone/attendono di fare belive che una funzione async
è fondamentalmente solo una promessa, ma che, ovviamente, non è il caso (almeno non con Babel6-transpiled code):
async function asyncFunc() {
// nop
}
var fooPromise = new Promise(r => setTimeout(r, 1));
console.clear();
console.log("typeof asyncFunc is", typeof asyncFunc); // function
console.log("typeof asyncFunc.next is", typeof asyncFunc.next); // undefined
console.log("typeof asyncFunc.then is", typeof asyncFunc.then); // undefined
console.log("typeof fooPromise is", typeof fooPromise); // object
console.log("typeof fooPromise.next is", typeof fooPromise.next); // undefined
console.log("typeof fooPromise.then is", typeof fooPromise.then); // function
Ancora, è sicuramente possibile per await
una promessa, come await fooPromise()
.
È un
async funtion
una cosa a sé stante eawait
è semplicemente compatibili con promesse?e, c'è un modo per distinguere tra un semplice
function
e unoasync function
in fase di esecuzione (in un modo compatibile con Babel)?
Grazie, ha molto senso. Quindi, in sostanza, 'asyncFunc' non è una Promessa, ma' asyncFunc() 'è - o con altre parole:' typeof asyncFunc(). Then == "function" ' –
Che è esattamente corretto. –