#android #reactjs #react-native
#Android #reactjs #react-native
Вопрос:
Я использую axios для извлечения базовых данных JSON, но продолжаю получать эту ошибку:
Possible unhandled promise rejection (id: 0): Network Error
Теперь, поскольку сама эта ошибка не была «настолько» полезной, чтобы знать, что происходит, я изменил свой блок кода и использовал .catch
.
Ошибка:
Error: Network Error
at createError (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:82235:11)
at XMLHttpRequest.handleError (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:82107:8)
at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:10284:15)
at XMLHttpRequest.setReadyState (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:25988:6)
at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:25836:6)
at http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:25930:52
at RCTDeviceEventEmitter.emit (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:9523:23)
at MessageQueue.__callFunction (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:7339:34)
at http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:7216:8
at guard (http://localhost:8081/index.android.bundle?platform=androidamp;dev=trueamp;hot=falseamp;minify=false:7155:1)
Код:
componentWillMount() {
axios.get('http://rallycoding.herokuapp.com/api/music_albums')
.then((response) => {
if(!response.ok){
console.log(response.statusText);
}
console.log((response))
}).then((response) => {
console.log("ok")
}).catch((err) => console.log(err))
}
Заранее спасибо.
Ответ №1:
Вам необходимо вернуть ответ внутри вашего оператора first then, иначе цепочка не будет работать.
componentWillMount() {
axios.get('http://rallycoding.herokuapp.com/api/music_albums')
.then((response) => {
if(!response.ok){
console.log(response.statusText);
}
console.log((response))
// return response
return response;
}).then((response) => {
console.log("ok")
}).catch((err) => console.log(err))
}
Надеюсь, это поможет.
Ответ №2:
Если кто-то еще сталкивается с этой проблемой, мне удалось ее исправить, добавив .done();
в конце цепочки обещаний.
componentDidMount() {
axios.get('https://rallycoding.herokuapp.com/api/music_albums')
.then((response) => console.log(response))
.done();
}