gpt4 book ai didi

javascript - 如何正确使用 redux-observable 和 promise?

转载 作者:行者123 更新时间:2023-11-29 11:02:08 25 4
gpt4 key购买 nike

我正在使用 hello.js登录。

hello('abc').login() 返回一个 promise 。

它确实登录成功,因为 hello.js 本身将 token 保存在本地存储中。

但是,下面的代码有时不会调度操作 SIGN_IN_SUCCEED

export const signInEpic = (action$, store) =>
action$
.ofType(SIGN_IN)
.mergeMap(action =>
Observable
.fromPromise(hello('msft').login({ scope }))
.map(response => ({
type: SIGN_IN_SUCCEED,
payload: response.authResponse.access_token
})
)
.catch(error => Observable.of({ type: SIGN_IN_FAILED, payload: error }))
);

更新:Jay 的Pause on Caught Exceptions 方法帮助我找到了错误。上面的代码没有问题。导致问题的原因是,首先我尝试在获得 SIGN_IN_SUCCEED 后将 token 保存到商店。然后我在应用程序登录后立即使用 token 来获取内容。因此,当使用 token 获取步骤在在商店中保存 token 步骤之前运行时,它会导致也不会发送 SIGN_IN_SUCCEED 的问题。

最佳答案

如果我对您的示例中缺少的内容做出一些假设(例如 scope、hello.js 的作用等),它会按预期工作。这是一个例子:https://jsbin.com/rasumo/edit?js,output

很遗憾,您的代码中肯定还有其他问题没有包含在此处。您如何确认它没有调度 SIGN_IN_SUCCEED 操作?控制台中是否有任何错误?您是否尝试过在调试器中启用“捕获到异常时暂停”以查看您是否在某个地方默默地吞下了一个阻止操作到达您的 reducer 的错误?

要确认的另一件事是 hello('msft').login({ scope }) 返回的 Promise 实际上确实解析了。您可以链接一个 .then() 来确认这一点。

希望这对您有所帮助!

关于javascript - 如何正确使用 redux-observable 和 promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45310849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com