Staram się lepiej zrozumieć, co jest w języku JavaScript technicznie możliwe pod async function
, nawet jeśli w zasadzie wiem, jak z nich korzystać.techniczna różnica między asynchroniczną funkcją ES7 a obietnicą?
Wiele wstępy do async/czekają uczynić uwierzyć, że funkcja async
jest w zasadzie tylko obietnica, ale to oczywiście nie jest (przynajmniej nie z 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
Mimo to, jest to z pewnością możliwe na await
obietnicę, jak await fooPromise()
.
Czy
async funtion
rzeczą na jego własny iawait
jest po prostu kompatybilny z obietnic?i czy istnieje sposób na rozróżnienie między prostymi
function
iasync function
w czasie wykonywania (w sposób zgodny z Babel)?
Dzięki, ma to wiele sensu. Zasadniczo, 'asyncFunc' nie jest obietnicą, ale' asyncFunc() 'jest - lub innymi słowami:' typeof asyncFunc(). Then == "function" ' –
To jest dokładnie poprawne. –