2017-01-10 11 views
0

Использование window.fetch() в Firefox и Chrome, чтобы получить данные из локального файла JSON, оказывается хлопотно:window.fetch .then(), не дожидаясь

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);  
 
});

Для какие-то причина первого .then() функция вызывается до полного ответа AJAX, в результате чего обещания объекта (ответ) будучи

что приводит к нежелательному выходу, как я не получаю ПДР ta Я хотел получить.

Я просмотрел несколько документов, я не могу найти ничего на своем конце, что я делаю неправильно.

Любые идеи?

+0

Вы используете это на веб-сайте ccchapel.com? Если нет, вам понадобится поддержка кросс-origin на сервере. Проверьте ответ на [CORS-header 'Access-Control-Allow-Origin'] (http://stackoverflow.com/a/10636765/5459839) – trincot

+1

'response' не является объектом обещания, вы должны регистрировать что-то еще , – Bergi

ответ

-1

После немного более Googling, я нашел эту статью Google: https://developers.google.com/web/updates/2015/03/introduction-to-fetch#chaining-promises

Похоже, вы должны построить некоторые дополнительные функции, чтобы ждать, пока статус не решен. Затем это будет правильно передаваться, как и следовало ожидать.

0

Опубликованный код в порядке, как есть. Заменить URL-адрес

var url = 
    "data:application/octet-stream;base64,eyJncmVldGluZyI6ICJoZWxsbyBmb2xrcyJ9Cgo="; 

({"приветствие": "привет народ"}), чтобы увидеть его в действии.

Что, по-видимому, отсутствует, является предложением .catch в цепочке обещаний, чтобы сообщить об ошибках синтаксического анализа в файле .json.