fetch Promise 永远不会被执行
Posted
技术标签:
【中文标题】fetch Promise 永远不会被执行【英文标题】:fetch Promise never gets executed 【发布时间】:2016-06-30 13:38:42 【问题描述】:我正在使用 nativescript 为 android 开发应用程序。 我有类似的东西
var fetchModule = require("fetch");
fetchModule.fetch("http://202.120.227.11/")
.then(function(resp)
console.log(JSON.stringify(resp));
return resp;
)
.catch(function(err)
console.log(JSON.stringify(err));
return err;
);
但是then
块永远不会被执行。
有时catch
块被执行并给出网络错误。
但是无论哪种情况,根据我的 tcpdump 记录,请求都被发送并顺利收到响应。
所以,nativescript 似乎出于某种原因过滤了响应。
有人经历过吗?
【问题讨论】:
【参考方案1】:请注意,您的resp
是一个Response 对象,如果您想读取它的内容,您需要使用它的功能之一:arrayBuffer、blob、formData、json 或@ 987654326@.
这些函数读取完成的响应并返回一个使用读取值解析的承诺。
例如,
fetch("http://202.120.227.11/")
.then(function(resp)
return resp.json();
)
.then(function(val)
console.log(JSON.stringify(val));
return val;
);
【讨论】:
【参考方案2】:我知道这已经很晚了,但我只是想发帖以防万一有人遇到同样的问题。我在使用 NativeScript 时遇到了同样的问题,我的解决方案是保护我的站点/端点。应用传输安全策略需要使用安全连接。因此,http 将不起作用。您必须通过 https 连接。
【讨论】:
以上是关于fetch Promise 永远不会被执行的主要内容,如果未能解决你的问题,请参考以下文章
Redux-Saga ES6类语法方法在调度操作时不会被调用
addEventListener('fetch', callback) 在 ReactJS 中永远不会触发回调