添加另一个方法后,dispatch()和if-else语句出现问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加另一个方法后,dispatch()和if-else语句出现问题相关的知识,希望对你有一定的参考价值。

我有此操作可以获取存储在Firebase中的特定位置网址的详细信息。

原始代码(版本1)没有问题,我调度authGetToken(),代码识别存储在redux中的令牌(字符串),然后使用它来获取存储的数据。

版本1

    return dispatch => {
        dispatch(authGetToken())
            .then(token => {
                return fetch("https://myProject/location.json?auth=" + token);
            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };

但是现在我修改了url要求以包含用户UID作为url的一部分,它不起作用。我知道我的逻辑肯定存在缺陷,但我看不到它。

我希望写的是,一旦我调度authGetToken(),令牌调度authGetUserUID然后使用两个字符串(userUID和token)来获取数据。

版本2

    return dispatch => {
        dispatch(authGetToken())
            .then(token => {
                dispatch(authGetuserUID())
                return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };

非常感谢你们向我指出显而易见的事情> <因为我的诺布眼睛看不到它。提前致谢。

答案

我认为它可能与userUID有关,它似乎没有在任何地方初始化。也许尝试这样的事情:

    return dispatch => {
        dispatch(authGetToken()).then(token => {
                dispatch(authGetuserUID()).then(userUID=>{
                   return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
                })

            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };

以上是关于添加另一个方法后,dispatch()和if-else语句出现问题的主要内容,如果未能解决你的问题,请参考以下文章

从另一个线程中断 event_base_dispatch

调用包含的模板时“If-element”没有反应

Servlet处理业务逻辑,JSP处理视图渲染,Servlet处理请求后,把输出的结果转到JSP页面的解决方法

【umiJS】在非组件中调用 dispatch

核心数据和线程/ Grand Central Dispatch

iOS - dispatch_after解说