【发布时间】:2019-04-27 23:46:32
【问题描述】:
我有一个 fetch 调用当然是异步的,但我喜欢将所有这些都包装在一个或多个函数中,因此调用函数不会打扰。
这就是我现在拥有的:
private async wrapFetch(url): Promise<void> {
this.responseText = await this.doFetch(url);
}
private async doFetch(url): Promise<string> {
return fetch(url)
.then((rsp: response) => {
return rsp.text();
});
}
现在,我想像调用普通异步函数一样调用 wrapFetch
this.wrapFetch('some-url');
但是,这一行给出了以下警告:
Promise returned from wrapFetch is ignored
我曾尝试更改 wrapFetch 的返回类型,但这让情况变得更糟。任何建议我如何解决这个问题或我应该
【问题讨论】:
-
这是打字稿还是 IntelliJ 发出的警告(参见 stackoverflow.com/questions/41278900/…)?在任何情况下,错误消息都是指您不使用
wrapFetch方法返回的值这一事实,如果您是async函数,那么在调用之前一个简单的await就足够了,如果不是您可能应该添加一个catch处理程序以避免任何静默错误 -
是的,来自我的 IDE 的警告,所以可以忽略它!
-
我的评论能解决你的问题吗?我可以把它变成答案
-
几乎,我试图重现它(here,但流程还不正确,
console.log('f')仍然在console.log('e')之前。有没有办法解决这个问题,而不使用@ 987654333@ 在doIt函数内? -
好的,我读你的评论有点太快了。要解决您的问题,您只需将所有方法设为
async并在方法调用之前添加await关键字(例如在doIt方法中......)如果您不关心结果,只需对于控制流,在示例中添加它们stackblitz.com/edit/typescript-1iqahc?file=index.ts