I'm working on nodejs. Currently I'm doing the recursive part of my work.
In prodHelper.js
product: (data, totalUser) => {
return new Promise(async (resolve, reject) => {
// data = {total: 5, order: 6, status: active} -> As a dynamic data
let number = 1
let res = await prodHelper.groupProduct(data, totalUser, number)
console.log('RESULT', res) // undefined
})
}
groupProduct: (data, totalUser, number) => {
return new Promise(async (resolve, reject) => {
let result
if (data.total < totalUser) {
result = true
} else {
let nextNumber = number;
if (number < totalUser) {
nextNumber = nextNumber + 1
} else if (number == totalUser) {
nextNumber = number - totalUser
}
if (nextNumber >= 0 && nextNumber < totalUser) {
await prodHelper.groupProduct(data, totalUser, nextNumber)
}
}
return resolve(result)
})
}
I have run my code recursively successfully. But my problem here is when I call product
function it waits for groupProduct
function to run and return the result. But the groupProduct
function returns the results of the first run, not waiting for the results of the recursive run.
It will return undefined
, because it does not wait for recursion. Is there a way for it to wait for the recursion to finish and then return resolve(result)
.
I tried that. But it returns HTTP status code 503
:
groupProduct: (data, totalUser, number) => {
return new Promise(async (resolve, reject) => {
let result
if (data.total < totalUser) {
result = true
} else {
let nextNumber = number;
if (number < totalUser) {
nextNumber = nextNumber + 1
} else if (number == totalUser) {
nextNumber = number - totalUser
}
if (nextNumber >= 0 && nextNumber < totalUser) {
await prodHelper.groupProduct(data, totalUser, nextNumber)
}
}
if (result) {
return resolve(result) //error 503 : Service Unavailable
}
})
}
I am new to nodejs language so this is giving me a hard time. Can anyone give me any ideas. Thanks.