i wanna make output like this :
kembalian 1: 30000 kembalian 2: 20000 kembalian 3: 10000 kembalian 4: 5000
so after kembalian, there is number, but i wanna make it automaticly
with this code
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()
how could be ?
You can use "await" in a for loop, for example:
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);
}
}
And note the usage of >=0, I think having the exact amount of money should not result in an Error.
Use a global index variable:
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()
You have a loop, but reference i outside the loop. You need to include the loop's code into the loop:
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()