这是一个我可以从redux-saga
传奇中方便地调用的函数:
export function* getSessionToken(username: string) {
try {
const session = yield call(refreshSession, username);
return session.idToken.getJwtToken();
} catch (error) {
return;
}
}
使用:
function* signIn(username) {
const jwt = yield call(getSessionToken, username);
if (!jwt) {
return;
}
}
但是要说在代码的其他地方,我希望不使用redux-saga实现相同的流程。我该怎么办?甚至有可能吗?
这是我最好的(困惑和失败的)尝试:
function signIn(username) {
const generator = getSessionToken(username);
let result = generator.next();
while (!result.done) {
result = it.next();
}
result.then((jwt) => {
if (!jwt) {
return;
}
})
}
答案 0 :(得分:2)
这是不可能的(除非您决定自己处理所有效果),尽管没有理由getSessionToken
必须是传奇,所以您可以将其重写为正常功能然后使用它到处都是