gpt4 book ai didi

angular - 2秒内执行第二个请求作为第一个请求

转载 作者:行者123 更新时间:2023-12-04 09:18:57 29 4
gpt4 key购买 nike

我有两个要求。
我需要this.auth.login将在 this._auth.create 后 2 秒内执行被执行。
这不会发生在我身上。
我做错了什么?

auth() {
this._auth.create(this.form.value).subscribe(
() => {
setTimeout(() => {
this._auth.login(this.form.value).subscribe(
() => {
this.router.navigate(['/home']);
},
error => {
this._toast.error(error.error.message);
}
);
}, 2000)
},
error => {
this._toast.error(error.error.message);
}
)
}

最佳答案

尽量避免嵌套订阅。相反,您可以使用 RxJS operators混合和匹配多个(相互依赖的)可观察对象。
尝试以下

auth() {
this._auth.create(this.form.value).pipe(
delay(2000),
switchMap(_ => this._auth.login(this.form.value))
).subscribe(
_ => this.router.navigate(['/home']),
error => this._toast.error(error.error.message)
);
}
我用过 delay 运算符(operator)将第一个请求的通知延迟 2 秒,然后使用 switchMap 将其切换到第二个请求运算符(operator)。
但是在登录过程中引入固定延迟并不是好的设计。如果您有一些副作用需要在此延迟期间完成,另一种方法是将这些副作用包含在路由过程中,并使第二个调用直接等待第一个调用,而不是硬延迟。

关于angular - 2秒内执行第二个请求作为第一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63130095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com