this.userClient.getUser(userName)
.pipe(
concatMap(
user => {
this.user = user;
return this.userClient.setStatus(this.user.id, 'banned');
}
),
concatMap(
user => {
//set property...
return this.userClient.deleteImg(user.img);
}
),
mergeMap(
user => {
this.user = user;
return this.userClient.setGroup(user.id, 'test');
}
)
)
.subscribe(
user => {
//actions
},
error => ...
)
我希望我的方法一個一個地打開,而不是一次打開。我怎樣才能做到這一點?forkJoin 是唯一的出路嗎?
uj5u.com熱心網友回復:
保留第一個 switchMap,然后回傳一個 concat。concat 將對您想要的三個專案進行排序。Concat 等待一個完成,然后執行下一個,依此類推。
您可以concat在RxjS Concat 檔案上找到更多資訊
this.userClient.getUser(userName)
.pipe(
switchMap(
user => {
this.user = user;
return concat(
this.userClient.setStatus(this.user.id, 'banned'),
this.userClient.deleteImg(user.img),
this.userClient.setGroup(user.id, 'test')
);
}
)
)
.subscribe(
([user]) => {
//actions
},
error => ...
)
uj5u.com熱心網友回復:
只需使用 switchMap
this.userClient.getUser(userName)
.pipe(
switchMap(
user => {
this.user = user;
return this.userClient.setStatus(this.user.id, 'banned');
}
),
switchMap(
user => {
//set property...
return this.userClient.deleteImg(user.img);
}
),
switchMap(
user => {
this.user = user;
return this.userClient.setGroup(user.id, 'test');
}
)
)
.subscribe(
user => {
//actions
},
error => ...
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/326525.html
