Есть функция, обычная (её невозможно превратить в async, т.к. используется в CRM Creatio)
makeDetailFilter: function() {
var ESQs = ...;
var resultCollection = [];
// Здесь не относящийся к задаче код
var detailIDs = getDetailIdByESQ(ESQs);
if (detailIDs && detailIDs.length) {
// Делаем что-то
resultCollection = detailIDs;
} else {
resultCollection = ['x', 'y', 'z'];
}
return resultCollection;
}
async getDetailIdByESQ(esq) {
var result = await new Promise(pr => {
esq.getEntityCollection(function(result) {
resolve(result);
}, this);
});
return result;
}
esq.getEntityCollection(function(result) - также библиотечная и при том асинхронная.
Проблема в том, что в if (detailIDs && detailIDs.length) { передается незавершенный промис.
Вопрос - можно ли как-то дождаться его завершения? И как можно решить подобную проблему?
then– Grundy Sep 09 '22 at 13:32