<h1>To Do List</h1>
<div id="list"></div>
.item {
  background: #eee;
  padding: 5px 15px;
  margin: 5px;
}

.item:nth-child(even) {
  background: #e0cbcb;
}
const getData = (url) => new Promise((resolve, reject) => {
  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = () => {
    if (xhttp.readyState === 4 ) {
      if (xhttp.status === 200) {
        resolve(JSON.parse(xhttp.response));
      } else {
        if (xhttp.status === 404) {
           reject('404');
        }
        reject(xhttp.statusText);
      }
    }
  };
  xhttp.open("GET", url, true);
  xhttp.send();
});

getData('https://jsonplaceholder.typicode.com/todos/1')
  .then(res => {
    appendItem(res);
    return getData('https://jsonplaceholder.typicode.com/todos/2')
    }
  )
  .catch(res => {
    console.log('top', res);
  })
  .then(res => {
    appendItem(res);
    return getData('https://jsonplaceholder.typicode.com/todos/3')
    }
  ).catch(res => {
    console.log('middle', res);
  })
  .then(res => {
    appendItem(res);
  console.log(a)
    }
  ).catch(res => {
    console.log('bottom', b)
  }).catch(res => {
    console.log('aa', c);
  }).catch(res => {
    console.log('bb');
  }).catch(res => {
    console.log('cc');
  })

const appendItem = (res) => {
     if (!res) {
      return;
    }
    const { id, title, completed } = res;
    const html = `<div class="item">
                    <div>Id: ${id}</div>
                    <div>Title: ${title}</div>
                    <div>Completed: ${completed}</div>
                  </div>`;
    const newNode = document.createElement('div');      
    newNode.innerHTML = html;
    document.querySelector('#list').appendChild(newNode);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.