Evet, await / async harika bir konseptti, ancak uygulama tamamen bozuk.
Her ne sebeple olursa olsun, await anahtar sözcüğü, yalnızca zaman uyumsuz bir yöntem içinde kullanılabilecek şekilde uygulanmıştır. Bu aslında bir hatadır, ancak buradan başka hiçbir yerde böyle anıldığını görmeyeceksiniz. Bu hatanın düzeltmesi, await anahtar sözcüğünü, çağıran işlevin kendisi eşzamanlı veya eşzamansız olup olmadığına bakılmaksızın, yalnızca zaman uyumsuz bir işlevi ÇAĞIRMAK İÇİN kullanılabilecek şekilde uygulamak olacaktır.
Bu hata nedeniyle, kodunuzun herhangi bir yerinde gerçek bir eşzamansız işlevi çağırmak için await kullanırsanız, TÜM işlevleriniz eşzamansız olarak işaretlenmeli ve işlev çağrılarınızın TÜMÜ await kullanmalıdır.
Bu, esas olarak, tüm uygulamanızdaki tüm işlevlere, çoğu zaman uyumsuz olmayan ve hiçbir zaman eşzamansız olmayacak olan sözlerin ek yükünü eklemeniz gerektiği anlamına gelir.
Gerçekten düşünürseniz, bir işlevde await kullanmak, await anahtar sözcüğünü içeren işlevin ASYNC OLMAMASINI gerektirmelidir - bunun nedeni, await anahtar sözcüğünün, await anahtar sözcüğünün bulunduğu işlevde işlemeyi duraklatmasıdır. Bu işlevde işlem duraklatılırsa, kesinlikle eşzamansız DEĞİLDİR.
Bu nedenle, javascript ve ECMAScript geliştiricilerine - lütfen await / async uygulamasını aşağıdaki gibi düzeltin ...
- await yalnızca CALL async işlevleri için kullanılabilir.
- await, eşzamanlı veya eşzamansız herhangi bir işlevde görünebilir.
- "Await yalnızca eşzamansız işlevde geçerlidir" olan hata iletisini, "await yalnızca eşzamansız işlevleri çağırmak için kullanılabilir" olarak değiştirin.
await, yalnızca birasyncişlevin içinde kullanılabilir . Yani,awaitbir işlevi eşzamansız hale getirir, bu nedenle bu şekilde bildirilmesi gerekir.