在新项目中反应本机获取问题

时间:2015-05-22 18:01:48

标签: react-native

关注React Native Tutorial,我遇到了一个我不明白的fetch()问题。我无法找到一个帖子来阐明这一点。

fetch()似乎没有制作啊https请求,Promise没有响应then()

有问题的代码:

url = "https://api.github.com/repos/octocat/Hello-World";
fetch(url).then(function(resp) {
  return resp.json();
})
.then(function(json){
  console.log(json);
});

在localhost debugger-ui上运行此命令将返回以下内容,但没有console.log(json)输出:

Promise {_32: 0, _8: null, _89: Array[0]}

在chrome dev工具控制台上运行此反应原生调试ui:

Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
    Object {id: 1296269, name: "Hello-World", full_name: "octocat/Hello-World", owner: Object, private: false…}

我正在使用安装的最新软件包,如教程中所示。我的打包程序正在运行node_modules/react-native/packager/launchPackager.command ; exit;,我可以看到http://localhost:8081/index.ios.bundle。为了验证是否发出了https请求,我在localhost网址上运行fetch()时监控了本地Web服务器日志。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

好像我刚遇到同样的问题。

你的问题有点暗示我要了解发生的事情,代码如下:

fetch(url, option).
then((res) => {
  const json = res.json();
  console.log(json);
  return json;
}).then(json => {
  console.log(json);
  return json;
});

json中的第一个console.log实际上是Promise。因此它不会打印正确的内容。但第二个console.log将具有正确的json,因为then函数将解析返回的承诺。