函数不等待提取请求

时间:2019-01-27 12:49:24

标签: javascript reactjs promise fetch babel

我正在尝试从服务器检索JSON作为初始状态。 但是看起来该函数没有等待响应。

我查看了How to return return from a promise callback with fetch?之类的Stackoverflow不同帖子,但发现的答案似乎并没有帮助。

// Get the best initial state available
// 1. Check for local storage
// 2. Use hardcoded state with the test value from the server.

export function getInitialState() {
    if (localStorage.getItem('Backup') != undefined) {
        return returnValue = Map(JSON.parse(localStorage.getItem('Backup')))
    } else {
        var returnValue = initialState
        const GetJSON = (url) => {
            let myHeaders = new Headers();
            let options = {
                method: 'GET',
                headers: myHeaders,
                mode: 'cors'
            };
            return fetch(url, options).then(response => response.json());
        };
        GetJSON('https://example.com/api/v1/endpoint/valid/').then(result => {
            // Console.log gives a good result
            console.log(result)
            // The return is undefined
            return returnValue.setIn(['test'], result)
        });
    }    
}

在这种情况下,当我期望从服务器更新测试属性的returnValue JSON时,我会收到未定义的消息。

所以我真的希望函数getInitialState()返回状态。为此,它需要等待提取完成。我还尝试将return放置在GetJSON之前,但这没有任何效果。

好的,所以我只是尝试了以下方法:

GetJSON('https://example.com/api/v1/endpoint/valid/').then(result => {
    console.log('aaa')
    console.log(result)
    localstorage.setItem('init', result)
    console.log('bbb')
}).then(result => {
    console.log('done')
});

这将返回aaa和结果。 但是从不设置localStorage,也不会显示bbb和done。

0 个答案:

没有答案