有一个函数,常用的(不能转成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) {
传入的承诺不完整。
问题 - 是否有可能以某种方式等待其完成?以及如何解决这样的问题?