Ich versuche besser zu verstehen, was ein async function
in JavaScript technisch ist, auch wenn ich grundsätzlich weiß, wie man sie benutzt.technischer Unterschied zwischen ES7 Async-Funktion und ein Versprechen?
Viele Einführungen in async/await machen glauben, dass eine async
Funktion im Grunde nur ein Versprechen ist, aber das ist offensichtlich nicht der Fall ist (zumindest nicht mit 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
Dennoch ist es durchaus möglich, zu await
ein Versprechen, wie await fooPromise()
.
Ist ein
async funtion
etwas von seinen eigenen undawait
ist einfach kompatibel mit Versprechungen?und gibt es eine Möglichkeit, zwischen einer einfachen
function
und einerasync function
zur Laufzeit zu unterscheiden (in einer Babel-kompatiblen Weise)?
Danke, macht viel Sinn. Im Wesentlichen ist 'asyncFunc' keine Promise, aber' asyncFunc() 'ist - oder mit anderen Worten:' typeof asyncFunc(). Then == "function" ' –
Das ist genau richtig. –