【发布时间】:2019-02-09 07:50:30
【问题描述】:
我最近对async/await 很瘦,它的情况与参考文献相似。
在 javascript 中,没有低级语言中存在的指针、取消引用运算符等,这使得 javascript 看起来更简单,因为它假装变量存储对象的值,而实际上它存储对对象的引用并神奇地将其解析为当对象注意到您实际上想要获取数据时。所以看起来变量存储了对象本身。
可以观察到与 promise 完全相同的情况:当您将 promise 存储在某个变量中时,您实际上并不关心 promise 本身 - 您关心的是它的值。
AFAIK javascript 中没有指针,因为它们令人困惑,并且可以被抽象出来。承诺也是如此。
而不是做
const data = await fetch("endpoint");
你可以这样做
const data = fetch("endpoint");
因为 javascript 会发现您想要的是 fetch 返回的数据。 Promise 和 async/await 实际上可能成为语言的内部实现细节。
- 有可能吗(意思是可以用javascript实现)?
- 是否有一种语言已经可以做到这一点?
- 您希望它登陆 javasrcipt 吗?
【问题讨论】:
-
@JaromandaX 如果这让您感到困惑,请查看 Go。 “等待”在任何地方都是隐含的,如果你想“退出”等待,你可以用“去”前缀调用函数。这是一个比 javascript 更理智的模型。
-
@JaromandaX 同样适用于引用和指针,但它们在 javascript 中不存在,你可以不用它们
-
what you want is the data returned by the fetch- 这并不总是正确的。例如,您可能希望存储对promise的引用,以便了解您的请求是否是最后一个请求,并且您希望丢弃先前请求的结果。 -
@JaromandaX,我的回应是“你为什么要取消这个选择”。我的观点是,还有其他语言明确等待并且仍然可以选择。
-
@JaromandaX 我是说 javascript 中没有指针,因为我认为它们会让人们感到困惑,并且可以被抽象出来。承诺也是如此。
标签: javascript promise async-await