React Native 的 fetch 出现了奇怪的问题。
它以前可以工作,不确定我改变了什么,但它停止工作了。
login(data,success,fail){
console.log('doing fb login');
fetch(host+'/api/login?credentials='+data.credentials)
.then( (response) => {
console.log('got login response');
return response.json();
} )
.then( json => {
console.log('got login json');
if(json.result!='fail'){
success(json);
} else {
fail(json);
}
return json;
})
.catch((error) => {
console.warn(error);
});
}
问题是我看到第一条“获取登录响应”消息,但随后它就挂起,直到我按下触发“获取登录 json”的屏幕并按预期继续,什么也不会发生。
令人沮丧的是,因为这种情况一直在发生,而且我不明白为什么第二个 .then() 没有自动触发。
任何帮助深表感谢。
编辑:发现类似的问题:是什么导致本机反应缓慢? https://stackoverflow.com/questions/36262456/what-could-be-causing-this-slow-fetch-in-react-native
似乎已经在考虑:https://github.com/facebook/react-native/issues/6679 https://github.com/facebook/react-native/issues/6679
此外,只有在启用 Chrome 调试工具时才能看到该行为......有趣
response.json() 是一个承诺 https://developer.mozilla.org/en-US/docs/Web/API/Body/json,不是一个值。所以它不会为你解决。
我还会根据response.status而不是json.result检查结果,因为在某些情况下服务器的响应无法转换为json(例如401)。
.then( (response) => {
if (response.status >= 200 && response.status < 300) {
response.json().then((data) => success(data));
} else {
fail(response);
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)