Quiero hacer una salida como esta:
kembaliano 1: 30000 kembaliano 2: 20000 kembaliano 3: 10000 kembaliano 4: 5000
Entonces, después de Kembalian, hay un número, pero quiero hacerlo automáticamente.
con este codigo
function beliPromise(uang, harga) { return new Promise(function (resolve, reject) { setTimeout(function () { const kembalian = uang - harga; let angka = i for (let i = 0; i <= 10; i++) { console.log(i) } console.log(`kembalian ${angka}: ${kembalian}`); if (kembalian > 0) { resolve(kembalian); } else { reject(0); // atau bisa reject('uang anda habis bro :(') } }, 500) }) } async function kembalianAwait() { try { const kembalian1 = await beliPromise(50000, 20000); const kembalian2 = await beliPromise(kembalian1, 10000); const kembalian3 = await beliPromise(kembalian2, 10000); const kembalian4 = await beliPromise(kembalian3, 5000); // const kembalian5 = await beliPromise(kembalian4, 50000); // return kembalian5; } catch (err) { throw err } } kembalianAwait()Cómo puede ser ?
Puede usar "esperar" en un bucle for, por ejemplo:
function beliPromise(uang, harga) { return new Promise(function (resolve, reject) { setTimeout(function () { const kembalian = uang - harga; if (kembalian >= 0) { resolve(kembalian); } else { reject(); } }, 500) }) } let uang = 50000; async function kembalianAwait() { const harga = [20000, 10000, 10000, 5000]; try { for (let i = 0; i < harga.length; i++) { let kembalian = await beliPromise(uang, harga[i]) console.log(`kembalian ${i + 1}: ${kembalian}`); uang = kembalian } } catch (err) { console.log(err); } } Y tenga en cuenta el uso de >=0 , creo que tener la cantidad exacta de dinero no debería generar un error.
Utilice una variable de índice global:
var index = 1 function beliPromise(uang, harga) { return new Promise(function(resolve, reject) { const kembalian = uang - harga; console.log(`kembalian ${index}: ${kembalian}`); index ++; if (kembalian > 0) { resolve(kembalian); } else { reject(0); // atau bisa reject('uang anda habis bro :(') } }) } async function kembalianAwait() { try { const kembalian1 = await beliPromise(50000, 20000); const kembalian2 = await beliPromise(kembalian1, 10000); const kembalian3 = await beliPromise(kembalian2, 10000); const kembalian4 = await beliPromise(kembalian3, 5000); // const kembalian5 = await beliPromise(kembalian4, 50000); // return kembalian5; } catch (err) { throw err } } kembalianAwait()Tiene un bucle, pero haga referencia a i fuera del bucle. Debe incluir el código del ciclo en el ciclo:
function beliPromise(uang, harga) { return new Promise(function (resolve, reject) { setTimeout(function () { const kembalian = uang - harga; for (let i = 0; i <= 10; i++) { let angka = i console.log(i) console.log(`kembalian ${angka}: ${kembalian}`); if (kembalian > 0) { resolve(kembalian); } else { reject(0); // atau bisa reject('uang anda habis bro :(') } } }, 500) }) } async function kembalianAwait() { try { const kembalian1 = await beliPromise(50000, 20000); const kembalian2 = await beliPromise(kembalian1, 10000); const kembalian3 = await beliPromise(kembalian2, 10000); const kembalian4 = await beliPromise(kembalian3, 5000); // const kembalian5 = await beliPromise(kembalian4, 50000); // return kembalian5; } catch (err) { throw err } } kembalianAwait()