В настоящее время я пытаюсь реорганизовать кодовую базу, которую у меня есть, и хочу иметь более благоприятную для разработчиков кодовую базу. Часть 1 этого - изменение обратного вызова к обещаниям. В настоящее время в некоторых местах мы используем Async.waterfall, чтобы сгладить аддон обратного вызова, который работает для меня. Остальные места, где мы не могли потому, что они были условными обратные вызовы, Это означает, что различные функции обратного вызова внутри, если и ещеКак обрабатывать условные обратные вызовы с помощью Promises (Bluebird) в NodeJS
if(x){
call_this_callback()
}else{
call_other_callback()
}
Теперь я использую Блюберд обещаний в Node.js и я не могу понять, как обрабатывать условный обратный вызов, чтобы сгладить аддон обратного вызова.
EDIT Более реалистичный сценарий, учитывая, что я не понял суть проблемы.
var promise = Collection1.find({
condn: true
}).exec()
promise.then(function(val) {
if(val){
return gotoStep2();
}else{
return createItem();
}
})
.then(function (res){
//I don't know which response I am getting Is it the promise of gotoStep2
//or from the createItem because in both the different database is going
//to be called. How do I handle this
})
здесь вы используете три обратных вызова, которые будут называться? –
Я только что редактировал вопрос. Сделал сценарий более объяснительным, не могли бы вы отредактировать свой ответ, чтобы это отразить. –
Первый подход, который я нахожу, обескураживает, поскольку он способствует обратным вызовам в обратном вызове, чего я не хочу. Второй - более общий подход, требующий использования замыкания, где мне нужно убедиться, что у меня есть разные переменные во всей последовательной функции цепочки. Третий подходит, когда у вас есть другой тип данных из двух разных функций. Ни один из них, похоже, не является достаточно общим, но будет делать в этот момент времени. Будет продолжать охотиться за более элегантными решениями. Если обнаружено, это обновит его. Спасибо за ваше время. Очень признателен. –