异步/等待JS中的try/catch无法捕获异常

4

我有下面这段javascript代码。在我们的ES6项目中使用async/await。我注意到现在突然间404响应代码没有触发catch。实际上,.json()也会抛出一个控制台错误,但仍然不会触发catch。我期望try中的任何错误都会立即抛出并进入代码的catch块。

async getDash(projectId, projectUserId) {
  try {
    const events = (await this.apiHttp
      .fetch(`${projectId}/users/${projectUserId}/participant-event-dash`)).json();
    return events;
  } catch (e) {
    // fail back to local (dev testing)
    return (await this.http
      .fetch(`${this.appConfig.url}dist/api/query/json/partic-event-dash.json`)).json();
  }
}

1
FYI,“async/await”不是ES6的一部分。它很可能会成为明年发布的规范的一部分。 - Felix Kling
1个回答

5
如果json()方法是异步的,那么您需要再添加一个await
async getDash(projectId, projectUserId) {
  try {
    const events = await (await this.apiHttp
      .fetch(`${projectId}/users/${projectUserId}/participant-event-dash`)).json();
    return events;
  } catch (e) {
    // fail back to local (dev testing)
    return await (await this.http
      .fetch(`${this.appConfig.url}dist/api/query/json/partic-event-dash.json`)).json();
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接