我正在试图绕过RXJS并快速提出如何使用observable而不是promises来解决以下工作流程的问题。
以下是角度2中的登录工作流程:
我已经知道如何使用RXJS正确地执行此操作,主要是如何将所有这些链接在一起。我可以使用Observables获得一个关于如何做到这一点的快速伪代码吗?我基本上想要在应用程序中继续拦截JWT并存储在本地存储中(调用函数订阅上面的序列)
任何帮助都会很棒!
答案 0 :(得分:1)
我更喜欢这项任务的异步函数。
var jwtPromise = null;
function getJwt() {
return jwtPromise || (jwtPromise = getJwtNotCached());
}
async function getJwtNotCached() {
const localJwt = getLocalJwt();
if (localJwt) {
return localJwt;
}
const newJwt = await fetchJwtByPlatform();
storeLocalJwt(newJwt);
return newJwt;
}
async function fetchJwtByPlatform() {
if (platformIsAndroid()) {
return await fetchJwtOnAndroid();
}
return await fetchJwtOnWindows();
}
...
如果一次调用两次,此代码甚至可以确保不会发出多个网络请求。