我有一个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更改返回类型,但这使情况变得更糟。有关如何解决此问题或应该解决的任何建议
答案 0 :(得分:1)
是打字稿或IntelliJ发出的警告(cf Intellij Idea warning - "Promise returned is ignored" with aysnc/await)? 无论如何,错误消息是指您不使用 wrapFetch方法返回的值。
要解决第二个问题(console.log
调用的顺序)
您只需要使所有方法异步并添加await关键字
在方法调用之前(例如在doIt
方法中...),即使您不在乎结果,
只是为了控制流程,我在示例stackblitz.com/edit/typescript-1iqahc?file=index.ts