Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • E ECMAscript-Typescript
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 11
    • Issues 11
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • imunnic
  • ECMAscript-Typescript
  • Wiki
  • Modulo 4

Modulo 4 · Changes

Page history
cambios en asincronía y uso de api authored Jan 30, 2026 by imunnic's avatar imunnic
Hide whitespace changes
Inline Side-by-side
Showing with 24 additions and 9 deletions
+24 -9
  • Modulo-4.md Modulo-4.md +24 -9
  • No files found.
Modulo-4.md
View page @ 818a8a9d
...@@ -15,18 +15,33 @@ setTimeout((): void => { ...@@ -15,18 +15,33 @@ setTimeout((): void => {
console.log('Datos recibidos del servidor'); console.log('Datos recibidos del servidor');
}, 2000); }, 2000);
console.log('Petición enviada'); console.log('Fin de la petición');
``` ```
> El flujo principal no se bloquea; la operación asíncrona se gestiona mediante el **Event Loop**. > El flujo principal no se bloquea; la operación asíncrona se gestiona mediante el **Event Loop**. El **Event Loop** es el mecanismo que permite a Javascript (Typescript por herencia) ejecutar codigo en paralelo. Podría decirse que es un organizador de tareas o hilos.
Si se quisiera esperar a recibir los datos lo que habría que hacer es:
```ts
console.log('Iniciando petición...');
async function getDatos(): Promise<void> {
console.log('Iniciando petición...');
await retraso();
console.log('Datos recibidos del servidor');
console.log('Petición enviada');
}
getDatos();
```
--- ---
## 2. Qué es una API REST ## 2. Qué es una API REST
Una **API REST (Representational State Transfer)** permite la comunicación entre aplicaciones a través de **HTTP**. En una aplicación sanitaria, una API REST expone recursos como **personal, material, activaciones o inventario**. Una **API REST (Representational State Transfer)** permite la comunicación entre aplicaciones a través de **HTTP**. En una aplicación de gestión de recursos, una API REST expone recursos como **recursos, solicitudes o activaciones**.
Las API REST intercambian datos en **formato JSON**, fácilmente mapeables a **interfaces TypeScript**. Las API REST intercambian datos en **formato JSON**, fácilmente mapeables a **interfaces TypeScript**. Por qué
--- ---
...@@ -71,7 +86,7 @@ const obj: RecursoDTO = JSON.parse(json); ...@@ -71,7 +86,7 @@ const obj: RecursoDTO = JSON.parse(json);
```ts ```ts
async function obtenerRecursos(): Promise<RecursoDTO[]> { async function obtenerRecursos(): Promise<RecursoDTO[]> {
const respuesta = await fetch('https://api.panacea.com/recursos'); const respuesta = await fetch('http://localhost:8080/panacea/rest/recursos');
if (!respuesta.ok) { if (!respuesta.ok) {
throw new Error(`Error HTTP: ${respuesta.status}`); throw new Error(`Error HTTP: ${respuesta.status}`);
...@@ -98,7 +113,7 @@ obtenerRecursos() ...@@ -98,7 +113,7 @@ obtenerRecursos()
```ts ```ts
async function cargarRecursos(): Promise<void> { async function cargarRecursos(): Promise<void> {
try { try {
const respuesta = await fetch('https://api.panacea.com/recursos'); const respuesta = await fetch('http://localhost:8080/panacea/rest/recursos');
const datos: RecursoDTO[] = await respuesta.json(); const datos: RecursoDTO[] = await respuesta.json();
console.table(datos); console.table(datos);
} catch (error) { } catch (error) {
...@@ -115,7 +130,7 @@ cargarRecursos(); ...@@ -115,7 +130,7 @@ cargarRecursos();
```ts ```ts
async function agregarRecurso(nuevo: RecursoDTO): Promise<RecursoDTO> { async function agregarRecurso(nuevo: RecursoDTO): Promise<RecursoDTO> {
const respuesta = await fetch('https://api.panacea.com/recursos', { const respuesta = await fetch('http://localhost:8080/panacea/rest/recursos', {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(nuevo), body: JSON.stringify(nuevo),
...@@ -145,7 +160,7 @@ agregarRecurso({ ...@@ -145,7 +160,7 @@ agregarRecurso({
```ts ```ts
async function actualizarRecurso(id: string, datos: Partial<RecursoDTO>): Promise<void> { async function actualizarRecurso(id: string, datos: Partial<RecursoDTO>): Promise<void> {
await fetch(`https://api.panacea.com/recursos/${id}`, { await fetch(`http://localhost:8080/panacea/rest/recursos/${id}`, {
method: 'PATCH', method: 'PATCH',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(datos), body: JSON.stringify(datos),
...@@ -157,7 +172,7 @@ async function actualizarRecurso(id: string, datos: Partial<RecursoDTO>): Promis ...@@ -157,7 +172,7 @@ async function actualizarRecurso(id: string, datos: Partial<RecursoDTO>): Promis
```ts ```ts
async function eliminarRecurso(id: string): Promise<void> { async function eliminarRecurso(id: string): Promise<void> {
await fetch(`https://api.panacea.com/recursos/${id}`, { await fetch(`http://localhost:8080/panacea/rest/recursos/${id}`, {
method: 'DELETE', method: 'DELETE',
}); });
console.log('Recurso eliminado correctamente'); console.log('Recurso eliminado correctamente');
......
Clone repository

Índice

  • Inicio
  • Modulo 0. Instalaciones inciales
  • Modulo 1. Sitaxis básica
  • Modulo 2. Importaciones en Javascript
  • Modulo 3. Interacción con el BOM y con el DOM
    • Ejercicios
  • Modulo 4. Uso de servicios y API REST