Ich ersuche Artikel von der Website und ich muss überprüfen, ob die Beschreibung des Betreffs Wort "gekauft" hat und nur dann speichern Sie es in DB.Soll ich diese Aufgabe mit Promise lösen?
Also, wenn ich etwas liek dies tun:
items.forEach(function(item) {
if(!isPurchased)
saveToDb(item)
}
Aber es funktioniert nicht (Artikel wird in jedem Fall gespeichert), weil Funktion in IF-Anweisung (isPurchased) vorgesehen Zurückkehren undefiniert (wegen asynchroner Knoten Verhalten, denke ich).
Also schrieb ich verspreche 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();
});
});
}
Und dann dieses Versprechen in forEach Schleife:
response.items.forEach(function(item) {
notPurchased(item).then(function() {
DB.storeItem(item);
});
});
Ist das eine gute aproach? Ich habe nicht genug Erfahrung mit NodeJS und es erscheint mir ein wenig schwierig, ein Versprechen für die einfache Bool-Funktion zu definieren.