У меня есть функция, которая выполняет некоторую асинхронную обработку, и я хочу преобразовать ее в обещание, чтобы позже я могла создать «цепочку выполнения» с другими зависимыми функциями.
Ниже приведенкод (слегка измененный для конфиденциальности):
router.get('/api/prx/ptr', function(req, res) {
let prx = req.params.prx_id
let ptr = {}
let parse_text = (idx_array, prx) => {
for(let name of idx_array) {
if (typeof ptr[name] === 'undefined') {
ptr[name] = []
}
get_text(prx, name, (tg) => {
const pst = new Set(tg.ph.map(ps => ps.label))
pst.forEach(ps => {
ptr[name].push(ps)
})
})
}
return true
}
parse_text = promisify(parse_text)
documentExists(prx, function(err, dbexists){
if (err) {
console.log(err);
return res.status(404).send(err)
}
get_idx_array(prx, function(err, idx_array){
if (err) {
return res.status(err.code || 400).send(err)
}
idx_array = idx_array.map(function(v){return v._id});
parse_text(idx_array, prx)
.then(result => {
res.status(200).send(ptr)
})
})
})
})
Проблема в том, что в последней строке обещание никогда не разрешается и, таким образом, цикл запрос-ответ никогда не заканчивается.Не уверен, что я сделал неправильно в моей настройке.Любая помощь приветствуется.