diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
index e85525b..7bceb99 100644
--- a/PULL_REQUEST_TEMPLATE.md
+++ b/PULL_REQUEST_TEMPLATE.md
@@ -4,10 +4,12 @@ Nombre:
Usuario Platzi:
## 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..f8d41cd
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ JavaScript Challenge
+
+
+
+
+
diff --git a/src/index.js b/src/index.js
index d6fa599..9396bd0 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,32 +1,34 @@
-var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
+const API = "https://rickandmortyapi.com/api/character/";
+const xhttp = new XMLHttpRequest();
-var API = 'https://rickandmortyapi.com/api/character/';
-var 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);
- }
- };
- 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);
- });
+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(`ha ocurrido un error inesperado`);
+ }
+ }
+ };
});
-});
\ No newline at end of file
+}
+
+Promise.all([fetchData(API)])
+ .then((data1) => {
+ console.log(`Primer Llamado...`);
+ console.log(`'Personajes: ${data1[0].info.count}`);
+ return fetchData(`${API}${data1[0].results[0].id}`);
+ })
+ .then((data2) => {
+ console.log(`Segundo Llamado...`);
+ console.log(`Primer Personaje: ${data2.name}`);
+ return fetchData(data2.origin.url);
+ })
+ .then((data3) => {
+ console.log(`Tercer Llamado...`);
+ console.log(`Dimensión: ${data3.dimension}`);
+ })
+ .catch((message) => console.log(message));