JavaScript中是否存在同类同步异步方法调用链的简洁语法?未来有无计划?
解答
当前JavaScript是否支持该语法?
目前JavaScript不存在你设想的->语法,无法直接通过这种符号实现异步方法到同步方法的链式调用过渡。你提到的两种写法——通过.then()回调:
(new TestClass).syncMethod().asyncMethod().then(self => self.anotherSyncMethod())
或者嵌套await:
(await (new TestClass).syncMethod().asyncMethod()).anotherSyncMethod()
是当前实现此类逻辑的标准方案。
未来是否有相关语法规划?
截至目前,负责制定JavaScript标准的TC39委员会,并没有公开的、完全匹配你描述的->语法提案。不过社区和委员会有过一些简化异步调用的相关探索:
- 曾经提出过**管道操作符(
|>)**的提案,原本侧重函数式调用的简化,后续有讨论扩展至异步场景,但该提案目前处于停滞状态,尚未进入正式标准化流程。 - 针对异步对象方法链式调用的简化需求,社区偶尔有相关讨论,但尚未形成成熟的、被TC39接纳的正式提案。
如果你希望贴近预期的写法,可以自行封装轻量工具,比如给Promise添加自定义方法(注意避免全局污染):
// 自定义链式方法 Promise.prototype.next = function(cb) { return this.then(cb); }; // 使用示例 (new TestClass).syncMethod().asyncMethod().next(self => self.anotherSyncMethod());
内容的提问来源于stack exchange,提问作者a4356
相关产品推荐
相关产品推荐

