diff --git a/01 Non blocking/src/js/main.js b/01 Non blocking/src/js/main.js index 357fbfa..17aca7d 100644 --- a/01 Non blocking/src/js/main.js +++ b/01 Non blocking/src/js/main.js @@ -1,9 +1,7 @@ document.onreadystatechange = () => { + const load = () => { const search_button = document.getElementById('search_button'); - const service = new apiIceAndFire.Service(); - const printer = new printService.Printer(); - const apiMapper = mapper.apiMapper(); search_button.addEventListener('click', (event) => { event.stopPropagation(); @@ -11,34 +9,63 @@ document.onreadystatechange = () => { const characterInput = document.getElementById('input-character'); if (houseInput.value && characterInput.value) { - console.log('1'); - const housesRequestConfig = { - err: handleError, - callback: handleHousesRequestSucces(apiMapper, printer) - }; - service.getHousesByName(houseInput.value, housesRequestConfig); - console.log('2'); - const charactersRequestConfig = { - err: handleError, - callback: handleCharactersRequestSuccess(apiMapper, printer) - }; - service.getCharactersByName(characterInput.value, charactersRequestConfig); - console.log('3'); + GetHousesAndCharacters(houseInput, characterInput); } else { alert('Introduce a values') } }); }; + function GetHousesAndCharacters(houseInput, characterInput){ + const service = new apiIceAndFire.Service(); + const printer = new printService.Printer(); + const apiMapper = mapper.apiMapper(); + + const charactersRequestConfig = { + err: handleError, + service:service, + character: characterInput.value, + callback: handleCharactersRequestSuccess(apiMapper, printer) + }; + + const housesRequestConfig = { + err: handleError, + service: service, + house: houseInput.value, + callback: handleHousesRequestSucces(apiMapper, printer, GetCharacters,charactersRequestConfig) + }; + GetHouses(housesRequestConfig); + } + + function GetHouses(housesRequestConfig){ + console.log('First: House'); + const srv = housesRequestConfig.service; + const house = housesRequestConfig.house; + + srv.getHousesByName(house, housesRequestConfig); + } + + function GetCharacters(charactersRequestConfig){ + const srv = charactersRequestConfig.service; + const character = charactersRequestConfig.character; + + srv.getCharactersByName(character, charactersRequestConfig); + } + function handleError() { console.log(JSON.parse(this.responseText)); }; - function handleHousesRequestSucces(apiMapper, printer) { + function handleHousesRequestSucces(apiMapper, printer, callback, charactersRequestConfig) { return function () { const data = JSON.parse(this.responseText); const houses = apiMapper.housesMap(data); printer.printHouses(houses, 'houses'); + + if(callback!== null){ + console.log('Second: Character'); + callback(charactersRequestConfig); + } }; }; @@ -47,6 +74,7 @@ document.onreadystatechange = () => { const data = JSON.parse(this.responseText); const characters = apiMapper.caracthersMap(data); printer.printCharacters(characters, 'characters'); + console.log('All Requests completes'); }; }