7 javascript promise reactjs react-native fetch-api
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);
});
}
Run Code Online (Sandbox Code Playgroud)
问题是我看到第一个"获得登录响应"消息,但它只是挂起,没有任何反应,直到我按下触发"登录json"的屏幕并按预期继续.
令人沮丧的是因为这种情况一直在发生,我无法理解为什么第二个.then()不会自动触发.
任何帮助深表感谢.
编辑:发现了一个类似的问题:什么可能导致反应原生的这种缓慢提取?
似乎已经在考虑:https://github.com/facebook/react-native/issues/6679
此外,只有在Chrome调试工具启用时才会看到这种行为......很有趣
小智 0
response.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);
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |