是否可以在javascript中删除async / await并使异步透明?

问题描述 投票:0回答:1

我最近关于async/await最近一直很瘦,它的情况类似于参考文献。在javascript中,没有指针,derefecence运算符等存在于低级语言中,这使得javascript看起来更简单,因为它假装变量存储对象的值,而实际上它存储对象的引用并且神奇地将其解析为当它注意到您实际想要获取数据时的对象。所以它看起来好像变量存储了对象本身。

使用promises可以观察到相同的情况:当你将一个承诺存储在某个变量中时,你实际上并不关心承诺本身 - 你关心它的价值。

AFAIK在javascript中没有指针,因为它们令人困惑,可能被抽象出来,所以它们就是这样。同样适用于承诺。

而不是做

const data = await fetch("endpoint");

你可能会这样做

const data = fetch("endpoint");

因为javascript会弄清楚你想要的是fetch返回的数据。 Promise和async / await实际上可能成为语言的内部实现细节。

  1. 它是否可能(意味着可以在javascript中实现)?
  2. 有没有一种语言可以做到这一点?
  3. 你想要这个登陆javascript吗?
javascript promise async-await
1个回答
1
投票

javascript极不可能支持这种模式。目前异步代码的方法是如此之深,以至于在任何地方“明确等待”都会让javascript不再是javascript。我认为有可能提出一种编译成javascript的语言。

如果您正在寻找能够做到这一点的语言,请查看Go。对于异步编程来说,它是一个更加理智的模型,因为它从一开始就被考虑过。在javascript中,promises和async / await在很久之后被添加了。

10次​​中有9次你会想要'等待'一个异步函数,所以在每个函数中都是'等待'。如果你不想'等待'一个函数,你可以这样调用函数:

go foo()

因此,比较Go和Javascript,goawait关键字非常相似,但用于相反的情况。

在go中,函数前面的async关键字也不需要。

© www.soinside.com 2019 - 2024. All rights reserved.