//fetch basic, fetch improved
// let table = document.createElement('table');
// let tr = document.createElement('tr');
// let th = document.createElement('th');
// let th2 = document.createElement('th');

// document.body.appendChild(table);
// table.appendChild(tr);
// tr.appendChild(th);
// tr.appendChild(th2);
// th.innerHTML = 'Key';
// th2.innerHTML = 'Value';

// let luke = new Promise(function (resolve, reject) {
//     resolve(fetch('https://swapi.dev/api/people/1/'));
// })

// luke.then(resolve => resolve.json())
//     .then(luke => createTable(luke, table));

// function createTable(json, dom){
//     let url = 'https://swapi.dev/api/'
//     console.log(json)

//     for(let [key, value] of Object.entries(json)){
//         let tr = document.createElement('tr');
//         let tdKey = document.createElement('td');
//         let tdVal = document.createElement('td');
//         tdKey.innerHTML = key;

//         if(value.includes(url)){
//             tdVal.appendChild(createBtn(value, tdVal));

//         } else if(typeof (value) === 'object') {     
//             value.forEach((el) =>{
//                 tdVal.appendChild(createBtn(el, tdVal));
//             })
//         } else {
//             tdVal.innerHTML = value;
//         }

//         dom.appendChild(tr);
//         tr.appendChild(tdKey);
//         tr.appendChild(tdVal);
//     }
// }

// function createBtn(fetchLink, tdV){
//     let btn = document.createElement('button');
//     btn.innerHTML = 'btn';
//     btn.onclick = function(){
//         fetch(fetchLink)
//             .then(resolve => resolve.json())
//             .then(subFetch => createTable(subFetch, tdV))
//     }
//     return btn;
// }

//myfetch
function myfetch(url) {
    return p1 = new Promise(function (resolve, reject) {
        let xhr = new XMLHttpRequest();
        xhr.open('GET', url);
        xhr.onload = function() {
            if(this.status == 200) {
                resolve(JSON.parse(xhr.response));
            } else {
                reject (this.status);
            }
        };
        xhr.send();
    });
}

myfetch('https://swapi.dev/api/people/1/')
    .then(luke => console.log(luke));


//race
function delay(ms, url) {
    return p2 = new Promise(function (resolve, reject) {
        let xhr = new XMLHttpRequest();
        xhr.open('GET', url);
        xhr.onload = function() {
            if(this.status == 200) {
                resolve(JSON.parse(xhr.response));
            } else {
                reject (this.status);
            }
        };
        xhr.send();
    });
}

delay(3000, 'https://swapi.dev/api/people/1/')
    .then(() => console.log('выполнилось через 3 секунды'));

Promise.race([p1, p2]).then((value) => {
    console.log(value);
});
