在异步工作时,我通常会遇到嵌套结构。当订阅给我响应时,我就做某事,当诺言给我响应时,我便做某事,依此类推。一个例子是这样的:
loadHacks(hackService, hacksStorageService) {
firebase.auth().onIdTokenChanged(
(user) => {
if (user) {
const uid = user.uid;
const hacks = hackService.getHacks();
if (hacks.length === 0) {
user.getIdToken()
.then(
token => {
hacksStorageService.fetchHacks(token, uid)
.subscribe(
(hacks: Hack[]) => {
hackService.setHacks(hacks);
}
)
}
)
}
}
}
);
}
onIdTokenChanged将一个Observer放置在令牌上,getIdToken是一个Promise,fetchHacks是一个Observable。
如何重构代码?我已经阅读了有关操作的内容,但我并不十分了解。如果有人可以告诉我如何重构此类嵌套代码,我将不胜感激