Я запрашиваю элементы с сайта, и мне нужно проверить, содержит ли в нем описание слова «приобрел» и только затем сохранить его в БД.Должен ли я использовать Promise для решения этой задачи?
Так что, когда я делаю что-то Лик это:
items.forEach(function(item) {
if(!isPurchased)
saveToDb(item)
}
Но он не работает (элемент сохраняется в любом случае), так как функция, обеспечиваемая в IF заявлении (isPurchased) возвращения неопределенными (из-за асинхронной узла поведение, я думаю).
Итак, я написал Promise notPurchased:
function notPurchased(advert) {
return new Promise(
function(resolve, reject) {
if (description.length == 0)
resolve();
return request('adverts', {'count' : 50}, function(resp) {
for (i = 0; i < resp.count; i++) {
if(resp.response.items[i].text.match('purchased') != null)
reject('This item has been purchased!');
}
resolve();
});
});
}
, а затем использовать это обещание в цикле ForEach:
response.items.forEach(function(item) {
notPurchased(item).then(function() {
DB.storeItem(item);
});
});
Это хороший Подход? У меня недостаточно опыта работы с NodeJS, и мне кажется немного сложнее определить обещание для простой функции bool.