【发布时间】:2021-11-28 12:13:57
【问题描述】:
文件1.ts: 我正在调用 file2 服务的以下方法并期待响应。
const output = await this.file2Service.getMainData();
文件2.ts: 我期待以下方法的返回值(数据源)。但是这里发生的是“下面的函数甚至在 .then() 块中的代码被执行之前就返回了数据源。”
所以我每次都不确定。为了获得实际的 dataSource 值需要做什么。
public async getMainData(): Promise<any> {
const data = await this.getSubData();
data.forEach((result) => {
result.then((finalResult) => {
if (finalResult === 'success') {
const dataSource = await this.callDataSource();
}
});
});
return dataSource;
}
请忽略上面sn-p中的语法错误,它只是一个例子而不是实际代码。
【问题讨论】:
-
两个问题,第一个是将
async/await与promise.then方法混淆,选择一个模式并坚持下去。第二个是你期望返回什么?从当前的尝试来看,您似乎想返回最后一个成功的结果,但是有一个结果数组,这是您想要的吗? -
@Matthew 是的,我正在尝试返回 if () 块中存在的值。
-
this.getSubData()是否返回一组承诺?另一个问题是dataSource不存在于getMainData的最外层范围内。需要更好地了解问题。谢谢!
标签: javascript angular typescript async-await es6-promise