JavaScript - probelma con promesas

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 56 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

probelma con promesas

Publicado por leonardo (4 intervenciones) el 17/06/2020 18:47:29
Capture

Estoy intentando hacer un programa que lea muchos datos uno por uno y al final imprima todos en un array,
lo hice con solamente callbacks pero ahora estoy intentando hacerlo con promesas.

Mi problema es que cuando ingreso mi nombre y quiero pasar al primer .then este no espera que la función rl.question que pide el apellido termine, como hago para esperar a que termine y que siga el siguiente .then?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

probelma con promesas

Publicado por Costero (10 intervenciones) el 19/06/2020 17:48:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const readline = require("readline");
 
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
new Promise((resolve, reject) => {
    let arr = [];
    rl.question("What is your name: ", (nom) => {
        arr=[...arr, nom];
        resolve(arr);
    })
})
.then((arr)=>{
    console.log("After promise 1: " + arr)
    return new Promise((resolve, reject) => {
        rl.question("What is your last name: ", (lnom) => {
            arr=[...arr, lnom];
            resolve(arr);
        })
    })
})
.then((arr)=>{
    console.log("After promise 2: " + arr)
})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fabian
Val: 26
Ha disminuido su posición en 22 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

probelma con promesas

Publicado por Fabian (10 intervenciones) el 29/06/2020 15:34:54
resolve(arr) debe estar fuera de rl.question. Quedaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new Promise((resolve, reject) => {
    let arr = [];
    rl.question("What is your name: ", (nom) => {
        arr=[...arr, nom];
    })
    resolve(arr);
})
.then((arr)=>{
    console.log("After promise 1: " + arr)
    return new Promise((resolve, reject) => {
        rl.question("What is your last name: ", (lnom) => {
            arr=[...arr, lnom];
        })
      resolve(arr);
    })
})
.then((arr)=>{
    console.log("After promise 2: " + arr)
})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar