gpt4 book ai didi

javascript - 如何将 promise 连接到这条链?

转载 作者:行者123 更新时间:2023-12-03 15:00:49 25 4
gpt4 key购买 nike

我有一个检索一个用户的数据的功能。现在我想像这样在这个函数中获取 user_id:

    this.storage.get(USER_ID).then(val => {
this.id = val;
)}

所以api知道它需要哪个用户的id。
我必须插入的主要功能是:
ngOnInit() {
this.subscription = this.authService.authenticationStateSubject.pipe(
switchMap(isAuthenticated => {
if (isAuthenticated) {
return this.userService.getUserDetails(this.id);
} else {
return of(null);
}
}),
).subscribe(
result => {
if (result) {
this.information = result;
console.log(this.information);
} else {
}
},
error => {
}
);
}

我试图把我的片段放在 if (isAuthenticated) { 之后。但不知何故,它不适用于最后两个括号。我真的可以连接这两个片段吗?

组合版
ngOnInit() {
this.subscription = this.authService.authenticationState,
from(this.storage.get(USER_ID))
.pipe(
switchMap(([isAuthenticated, id]) => {
if (isAuthenticated) {
return this.userService.getUserDetails(this.id);
} else {
return of(null);
}
}),
).subscribe(
result => {
if (result) {
this.information = result;
console.log(this.information);
} else {
}
},
error => {
}
);
}

最佳答案

使用 from 将你的 promise 转换为 observable 并使用 combineLatest 和 authenticationStateSubject

this.subscription = combineLatest(
this.authService.authenticationStateSubject,
from(this.storage.get(USER_ID))
).pipe(
switchMap(
([isAuthenticated, id]) => isAuthenticated ? this.userService.getUserDetails(id) : of(null)
)
).subscribe(
result => {
// do stuff with result
}
);

关于javascript - 如何将 promise 连接到这条链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59008521/

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