React Native fetch .then 不执行代码,具体取决于内容
Posted
技术标签:
【中文标题】React Native fetch .then 不执行代码,具体取决于内容【英文标题】:React Native fetch .then not executing code, depending on contents 【发布时间】:2018-09-02 00:11:23 【问题描述】:在 React 本机应用程序中,我有以下 fetch 调用:
fetch("https://facebook.github.io/react-native/movies.json")
.then(response => response.json())
.then((responseJson) =>
console.log('HI THERE')
//console.error(responseJson);
);
保持原样,当执行 fetch 调用时,.then
似乎不会执行('HI THERE' 不会被打印)。但是,如果我取消注释包含console.error(responseJson);
的行,那么整个.then
都会被执行。
一个类似的问题是here,但我不完全确定那里发生的问题是否正是我遇到的问题。此外,答案与 fetch 调用是异步的这一事实有关,我们不能期望它们立即执行;我遇到的问题是 fetch 调用根本不执行 .then
(我已经等了几分钟几次),直到取消注释一行并且重新加载应用程序并重新执行 fetch 调用。
为什么会发生这种情况 - 我该如何解决它以使其按预期执行?是否是 React Native 错误 - 可能与 this 相关?
【问题讨论】:
【参考方案1】:我已经用零食试过了,对我来说效果很好 https://snack.expo.io/@troublediehard/fetch-test-app
但无论如何,如果 then
中没有出现某些内容,它可能会失败,您可以在 catch
中找到详细信息。尝试像这样检查它
fetch("https://facebook.github.io/react-native/movies.json")
.then(response => response.json())
.then((responseJson) =>
console.log('HI THERE')
// console.error(responseJson);
)
.catch(error =>
console.log(error);
);
【讨论】:
【参考方案2】:显然,问题在于我用来运行应用会话的方法。我使用的是sudo npm start
,但我改用sudo exp start
来修复它。我不完全确定确切的问题是什么(但我最好的猜测是npm start
中的某些内容会导致控制台日志一直隐藏在缓冲区中,直到记录错误为止)。
【讨论】:
这个链接可能也适用于一些有类似问题的人,虽然我自己还没有尝试过:***.com/questions/40030709/…以上是关于React Native fetch .then 不执行代码,具体取决于内容的主要内容,如果未能解决你的问题,请参考以下文章
react-native fetch 返回状态码 + json
React Native,Fetch和Dispatch:如何在mapDispatchToProps()中访问responseData?