gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:12:21 25 4
gpt4 key购买 nike

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

在 Promise 中也可以观察到同样的情况:当你将 Promise 存储在某个变量中时,你实际上并不关心 Promise 本身 - 你关心的是它的值。

据我所知,JavaScript 中没有指针,因为它们很令人困惑,并且可以被抽象出来,所以它们就是这样。 promise 也是如此。

而不是做

const data = wait fetch("端点");

你可以做

const data = fetch("端点");

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

  1. 这可能吗(意思是可以用 JavaScript 实现)吗?
  2. 是否有一种语言已经可以做到这一点?
  3. 您希望它出现在 javasrcipt 中吗?

最佳答案

JavaScript 极不可能支持这种模式。当前的异步代码方法是如此深入,以至于到处都有“显式等待”确实会让 javascript 不再是 javascript。我确实认为有可能开发出一种可以编译为 javascript 的语言。

如果您正在寻找一种能够执行此操作的语言,请看看 Go。对于异步编程来说,这是一个更加明智的模型,因为从一开始就考虑到了这一点。在 javascript 中,promise 和 async/await 是很晚才添加的。

十有八九你会想要“等待”一个异步函数,所以在 go 中每个函数都是“等待”的。如果您不想“等待”某个函数,可以像这样调用该函数:

go foo()

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

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

关于javascript - 是否可以在 javascript 中删除 async/await 并使 async 透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52163573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com