我尝试使用 React-Native 应用对新的 Firebase 实例进行 fetch API 调用,但遇到了此错误:
Possible Unhandled Promise Rejection (id: 0):
Network request failed
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25119:8)
at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:10405:15)
at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26688:6)
at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26536:6)
at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26630:52
at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:9638:23)
at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7493:34)
at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7375:8
at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7306:1)
at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7374:1)
函数如下所示:
getNotes(username){
username = username.toLowerCase().trim();
var url = `https://myproject-6342.firebaseio.com/${username}.json`;
return fetch(url).then((res) => res.json());
},
addNote(username, note){
username = username.toLowerCase().trim();
var url = `https://myproject-6342.firebaseio.com/${username}.json`;
return fetch(url, {
method: 'post',
body: JSON.stringify(note)
}).then((res) => res.json());
}
这里出了什么问题?
最佳答案
当发生网络错误时,来自 fetch API 的 promise 将被拒绝,并出现 TypeError,这意味着您必须处理该错误。示例:
function _handleError(errorMessage) {
console.log(errorMessage);
}
fetch('https://api.github.com/users/octocat/repos').then(function(response) {
if(response.ok) {
return response.json();
} else {
_handleError(`Oops, something went wrong: ${response.status}, ${response.statusText}`);
}
}).then(function(data) {
if(data) {
console.log('success', data);
}
}).catch(function(error) {
_handleError(`There has been a problem with your fetch operation: ${error.message}`);
});
关于javascript - 可能的未处理的 Promise 拒绝 - React-Native with Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553274/