41 lines
830 B
HTML
41 lines
830 B
HTML
<script>
|
|
function loadScript(src) {
|
|
return new Promise(function(resolve, reject) {
|
|
let script = document.createElement('script');
|
|
script.src = src;
|
|
|
|
script.onload = () => resolve(script);
|
|
script.onerror = () => reject(new Error("Script load error: " + src));
|
|
|
|
document.head.append(script);
|
|
});
|
|
}
|
|
|
|
class HttpError extends Error {
|
|
constructor(response) {
|
|
super(`${response.status} for ${response.url}`);
|
|
this.name = 'HttpError';
|
|
this.response = response;
|
|
}
|
|
}
|
|
|
|
function loadJson(url) {
|
|
return fetch(url)
|
|
.then(response => {
|
|
if (response.status == 200) {
|
|
return response.json();
|
|
} else {
|
|
throw new HttpError(response);
|
|
}
|
|
})
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.promise-avatar-example {
|
|
border-radius: 50%;
|
|
position: fixed;
|
|
left: 10px;
|
|
top: 10px;
|
|
}
|
|
</style>
|