Escribí funciones asíncronas de espera usando las funciones de retorno de Promise. Sin embargo, no estoy seguro de si se está implementando el comportamiento que deseo. En ese token, he intentado investigar formas de ver si mi código se comporta de forma asincrónica, pero fue en vano. Sin más preámbulos, aquí está mi código:
sum = 0 function checkEven(num) { return new Promise((res,rej) => { if(typeof num === 'number'){ if(num % 2 == 0){ res(true) console.log(`Currently processing ${num}`) } else { res(false) } } else { rej(`${num} is not a number!`) } }) } function addToSum(bool, num) { return new Promise((res,rej) => { if(bool){ sum += num res(`Adding ${num} to sum. Sum is now ${sum}.`) }else{ res(`Not adding ${num} to sum. Sum is now ${sum}.`) } rej("hi") }) } async function addEvenNumbersOnly(n1,n2) { try{ const first = await checkEven(n1) const second = await checkEven(n2) const addFirst = await addToSum(first, n1) console.log(addFirst) const addSecond = await addToSum(second, n2) console.log(addSecond) console.log(sum) } catch (err){ console.log(err) } } addEvenNumbersOnly(100,102)Con suerte, el código se explica por sí mismo; Tomo dos números y verifico su paridad, si son pares los sumo a una suma global, de lo contrario no lo hago.
El comportamiento asincrónico en mi cabeza está aquí:
const first = await checkEven(n1) const second = await checkEven(n2) ¿ checkEven(n2) mientras se checkEven(n1) ?
const addFirst = await addToSum(first, n1) const addSecond = await addToSum(second, n2) De manera similar, ¿comienza la ejecución addToSum(second, n2) mientras se addToSum(first, n1) ?