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

问题描述 投票:0回答:1

我有此操作可以获取存储在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());
                }
            })
        };

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

firebase react-native if-statement promise dispatch
1个回答
0
投票

我认为它可能与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());
                }
            })
        };
© www.soinside.com 2019 - 2024. All rights reserved.