microsoft / microsoft/TypeScript

`forEachChild` is hard to use with async API

未关闭
#64,126 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

@andrewbranch 已经在做这个了。

开始于 2026年9月1日。

Domain: API
主要语言
Go
星标
111k
派生
14.3k
平均合并
2 天 4 小时
30 天内合并 PR
132

描述

If you try to use the async API, it's a challenge today. The API provides a synchronous tree traversal function (`forEachChild`), but pulling on semantic information is asynchronous.

The problem isn't the mixture itself - it's that `forEachChild` stops walking when the visitor function returns a truthy result. This makes it impractical to use with async APIs because every async function returns a `Promise` which is truthy.

The current workarounds are a little awkward, basically introducing a layer of indirection between the traversal function and `forEachChild` that uses intermediate queues.

I'm not sure if there's an ideal solution - there's at least two problems right now:

- it feels like we could benefit from a `forEachChildAsync` or something like that.
- using `forEachChild` is a foot-gun if you've decided to use the async API.

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。