繁体   English   中英

是否有可能在JavaScript中删除异步/等待并让异步透明化?

[英]will it be possible to drop async/await in javascript and make async transparent?

我最近对async/await近来很瘦,它的情况类似于参考。 在javascript中,不存在低级语言中的指针,解引用运算符等,这使javascript看起来更简单,因为它假装变量存储对象的值,而实际上它存储对对象的引用并神奇地将其解析为当该对象通知您实际上要获取数据时。 因此,看起来该变量似乎存储了对象本身。

使用promise可以观察到几乎相同的情况:当您将promise存储在某个变量中时,您实际上并不在乎promise本身,而在乎其价值。

AFAIK在javascript中没有指针,因为它们令人困惑并且可以被抽象化。 承诺也是一样。

而不是做

const data = await fetch("endpoint");

你可能正在做

const data = fetch("endpoint");

因为javascript会找出您想要的是提取所返回的数据。 承诺和异步/等待实际上可能成为语言的内部实现细节。

  1. 有可能吗(意味着可以用javascript实现)?
  2. 有没有已经使用过的语言?
  3. 您是否希望将其放入javasrcipt?

javascript支持这种模式的可能性很小。 当前异步代码的方法是如此之深,以至于到处都有“显式等待”将使javascript不再是javascript。 我确实认为有可能提出一种可编译为javascript的语言。

如果您正在寻找一种可以做到这一点的语言,请查看Go。 对于异步编程而言,这是一个更为精明的模型,因为它从一开始就被考虑。 在javascript中,promise和async / await在很久以后才被采用。

在十分之九的情况下,您将要“等待”一个异步函数,因此在运行时,每个函数都会被“等待”。 如果您不想“等待”一个函数,可以这样调用该函数:

go foo()

因此,将Go和Java脚本进行比较, goawait关键字非常相似,但是用于相反的情况。

使用go时,也不需要在函数前面使用async关键字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM