And*_*eri 2 javascript node.js typescript nestjs
如何在HttpService使用NestJs时使用Async / Await?以下代码不起作用:
async create(data) {
return await this.httpService.post(url, data);
}
Run Code Online (Sandbox Code Playgroud)
Gus*_*ter 28
由于toPromise()已弃用,您可以将其替换为firstValueFrom或lastValueFrom
例如:
const resp = await firstValueFrom(this.http.post(`http://localhost:3000/myApi`)
Run Code Online (Sandbox Code Playgroud)
https://rxjs.dev/deprecations/to-promise
rxjs库是功能最强大的并发程序包,它选择了表单处理系统事件(例如单击),外部请求(例如获取数据或删除记录和...)。
该库的主要概念是:
处理将来接收的数据
因此,您通常在可观察对象中使用3个参数,例如
observablSource.subscribe(
data => { ... },
failure => { ... },
compelete => { ... }
)
Run Code Online (Sandbox Code Playgroud)
但对于大多数后端开发人员而言,请使用ECMAScript 6功能提供的Promises,它是JavaScript的本机部分。
在Angular 4+和Nest.js中,默认情况下使用支持Observable的rxjs。在技术细节中,您可以找到自动观察到的承诺更改解决方案。
const data: Observable<any>;
data.from([
{
id: 1,
name: 'mahdi'
},
{
id: 2,
name: 'reza'
},
])
Run Code Online (Sandbox Code Playgroud)
现在您已经模拟了服务器中具有可观察类型的请求。如果要将其转换为Pormise,请使用链接方法,例如:
data.toPromise();
Run Code Online (Sandbox Code Playgroud)
从这一步开始,您已承诺对象和表单将更好地使用它来附加异步/等待
async userList( URL: string | URLPattern ) {
const userList = await this.http.get<any>( URL ).toPromise();
...
}
Run Code Online (Sandbox Code Playgroud)
该HttpModule用途Observable不是Promise不与异步/ AWAIT工作。所有HttpService方法都返回Observable<AxiosResponse<T>>。
因此,您可以将其转换为a Promise,然后在调用它时使用await,或者仅返回Observable并让调用者处理它。
create(data): Promise<AxiosResponse> {
return this.httpService.post(url, data).toPromise();
^^^^^^^^^^^^^
}
Run Code Online (Sandbox Code Playgroud)
注意,return await几乎(除了try catch)总是多余的。
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |