【问题标题】:How to use generator functions from ordinary promise based code?如何使用基于 Promise 的普通代码中的生成器函数?
【发布时间】:2019-01-28 12:02:06
【问题描述】:

这是一个我可以从redux-saga 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;
        }
    })
}

【问题讨论】:

    标签: generator redux-saga


    【解决方案1】:

    这是不可能的(除非你决定自己处理所有的效果),但没有理由 getSessionToken 需要成为 saga,所以你可以将它重写为正常功能,然后你可以在任何地方使用它。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2018-11-30
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2020-04-23
      • 2016-08-26
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多