diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
index e85525b..8a89330 100644
--- a/PULL_REQUEST_TEMPLATE.md
+++ b/PULL_REQUEST_TEMPLATE.md
@@ -1,13 +1,13 @@
## DESCRIPTION
-Nombre:
-Usuario Platzi:
+Nombre: Camilo Echeverry
+Usuario Platzi: camiverry
## Ciudad
- [ ] Ciudad de México
-- [ ] Bogotá
+- [x] Bogotá
# Retos:
- - [ ] Primer problema
- - [ ] Segundo problema
- - [ ] Tercer problema
+ - [x] Primer problema
+ - [x] Segundo problema
+ - [x] Tercer problema
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e8c8dbc
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,13 @@
+{
+ "name": "escuelajs-reto-03",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
+ }
+ }
+}
diff --git a/package.json b/package.json
index 65a8bf2..dbaa2f1 100644
--- a/package.json
+++ b/package.json
@@ -24,4 +24,4 @@
"dependencies": {
"xmlhttprequest": "^1.8.0"
}
-}
\ No newline at end of file
+}
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..882f367
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ Document
+
+
+
+
+
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index d6fa599..20eed79 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,32 +1,44 @@
-var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
+const API = 'https://rickandmortyapi.com/api/character/'
-var API = 'https://rickandmortyapi.com/api/character/';
-var xhttp = new XMLHttpRequest();
+const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
+const xhttp = new XMLHttpRequest();
-function fetchData(url_api, callback) {
- xhttp.onreadystatechange = function (event) {
- if (xhttp.readyState === '4') {
- if (xhttp.status == 200)
- callback(null, xhttp.responseText);
- else return callback(url_api);
+
+function fetchData(url_api) {
+ return new Promise((resolve, reject) => {
+ xhttp.open('GET', url_api, true);
+ xhttp.send();
+ xhttp.onreadystatechange = event => {
+ if (xhttp.readyState === 4) {
+ if (xhttp.status == 200)
+ resolve(JSON.parse(xhttp.responseText));
+ else {
+ return reject(`Ocurrió un error, No se pudo descargar la información`);
+ }
}
};
- xhttp.open('GET', url_api, false);
- xhttp.send();
-};
-
-fetchData(API, function (error1, data1) {
- if (error1) return console.error('Error' + ' ' + error1);
- console.log('Primer Llamado...')
- fetchData(API + data1.results[0].id, function (error2, data2) {
- if (error2) return console.error(error1);
- console.log('Segundo Llamado...')
- fetchData(data2.origin.url, function (error3, data3) {
- if (error3) return console.error(error3);
- console.log('Tercero Llamado...')
- console.log('Personajes:' + ' ' + data1.info.count);
- console.log('Primer Personaje:' + ' ' + data2.name);
- console.log('Dimensión:' + ' ' + data3.dimension);
- });
- });
-});
\ No newline at end of file
+})
+}
+
+Promise
+ .all([fetchData(API)])
+ .then(infoChar1 => {
+
+ console.log(`Primer Llamado...`)
+ console.log(`'Personajes: ${infoChar1[0].info.count}`);
+ return fetchData(`${API}${infoChar1[0].results[0].id}`)
+})
+
+.then(infoChar2 => {
+ console.log(`Segundo Llamado...`)
+ console.log(`Primer Personaje: ${infoChar2.name}`);
+ return fetchData(infoChar2.origin.url)
+})
+
+.then(infoDim => {
+ console.log(`Tercer Llamado...`)
+ console.log(`Dimensión: ${infoDim.dimension}`);
+})
+
+.catch(message => console.log(message))
+