비동기 프로세스 제어의 일반적인 문제는 promise 또는 async/await를 사용해야하며 물론 콜백은 괜찮지 만 제안하지는 않습니다.
module.exports.findDeal = function(dealRequest, callback){ //callback function
Deal.findOne({name:dealRequest},function(err,newDeal){
if (err) callback(err)
console.log("returned from the model: ",newDeal)
callback(null, newDeal)
})
}
Deal.findDeal(dealRequest, (err, result) => { //callback function
var newDeal = result;
});
약속 스타일 : 약속 비동기 기능과 기본에 사용해야 기다리고
module.exports.findDeal = async function (dealRequest) {
return new Promise((resolve, reject) => {
try {
const newDeal = await Deal.findOne({name:dealRequest});
resolve(newDeal)
} catch (error) {
reject(error)
}
})
}
(async() => {
try {
var newDeal = await Deal.findDeal(dealRequest)
} catch (error) {
console.log(error)
}
})()
참고 :
module.exports.findDeal = function(dealRequest){
return new Promise((resolve, reject) => {
// still callback function is ok
Deal.findOne({name:dealRequest},function(err,newDeal){
if (err) reject(err)
resolve(newDeal)
})
// mongoose return promise, both is ok
Deal.findOne({name:dealRequest}).then(newDeal => {
resolve(newDeal)
}).catch(err => {
reject(err)
})
})
}
Deal.findDeal(dealRequest).then(result => {
var newDeal = result;
}).catch(err => {
console.log(err)
})
하지만 난 당신이 비동기/await를를 사용하는 것이 좋습니다.