window.fetch .then(),而不是等待

时间:2017-01-10 21:19:06

标签: javascript ajax fetch

在Firefox和Chrome中使用window.fetch()从本地JSON文件中获取数据,这很麻烦:



var url = "http://sandbox.ccchapel.com/Thy-Kingdom-Come/data/outreach-spree.json";
var request = new Request(url, {
        method: 'get',
        mode: 'no-cors'
    });

fetch(request).then(function(response) { 
    console.log(response);
    return response.json();
}).then(function(j) {
    console.log(j);    
});




无论出于何种原因,在完整的AJAX响应之前调用第一个.then()函数,导致promise对象(响应)正在     <state>: "pending"

这会导致不必要的输出,因为我没有得到我想要的数据。

我查看了多份文件,但我似乎无法找到我做错的任何事情。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

发布的代码很好。用

替换网址
var url = 
  "data:application/octet-stream;base64,eyJncmVldGluZyI6ICJoZWxsbyBmb2xrcyJ9Cgo=";

({“greeting”:“hello folks”})看到它在行动。

似乎缺少的是承诺链上的.catch子句,用于报告.json文件中的解析错误。

答案 1 :(得分:-1)

经过谷歌搜索后,我发现谷歌的这篇文章:https://developers.google.com/web/updates/2015/03/introduction-to-fetch#chaining-promises

看起来你必须构建一些额外的函数来等待状态得到解决。然后,这将正确地传递响应,正如您所期望的那样。