我正在尝试从服务器检索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。