Мне нужно отфильтровать массив на основе условия, которое можно проверить только асинхронно.
return someList.filter(function(element){
//this part unfortunately has to be asynchronous
})
Есть ли более приятный способ сделать это с обещаниями, чем то, что у меня уже есть?
В этом фрагменте для промисов используется Q, но на самом деле вы можете предположить любую правильную реализацию промисов.
return q.all(someList.map(function (listElement) {
return promiseMeACondition(listElement.entryId).then(function (condition) {
if (condition) {
return q.fcall(function () {
return listElement;
});
} else {
return q.fcall(function(){});
}
});
}));
Пример кода преобразует обещание в отфильтрованный массив, и это желаемый результат.