Разбираюсь с "обещаниями" здесь:
habrahabr.ru/post/245145/. В IE они не поддерживаются. Подключаю через polyfill двумя способами:
1) Если подключаю через document.write все работает. Но на сколько я понимаю если будут траблы с сервером скрипта, то будут траблы с отрисовкой страницы.
2) Если подключаю через appendChild(script), то получаю "Promise" не определено.
Как правильно подключить скрипты?
<!doctype html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<script>
if(window.ActiveXObject || "ActiveXObject" in window){
//always true in IE
/*
document.write('<script src="https://www.promisejs.org/polyfills/promise-6.1.0.min.js"><\/script>');
*/
var script=document.createElement('script');
script.src = "https://www.promisejs.org/polyfills/promise-6.1.0.min.js";
document.documentElement.children[0].appendChild(script);
}
</script>
</head>
<body>
<h1>http</h1>
<script>
function get(url) {
return new Promise(function(succeed, fail) {
var req = new XMLHttpRequest();
req.open("GET", url, true);
req.setRequestHeader('Accept', 'application/json');
req.addEventListener("load", function() {
if (req.status < 400)
succeed(req.responseText);
else
fail(new Error("Request failed: " + req.statusText));
});
req.addEventListener("error", function() {
fail(new Error("Network error"));
});
req.send(null);
});
}
function getJSON(url) {
return get(url).then(JSON.parse);
}
getJSON("http://eloquentjavascript.net/author").then(function (text) {
console.log(text);
}, function (error) {
console.log("Failed to get author page: " + error);
});
</script>
</body>