【发布时间】:2017-01-23 17:09:32
【问题描述】:
我正在从站点请求项目,我需要检查主题的描述中是否包含“已购买”一词,然后才将其保存到数据库。
所以,当我做某事时:
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 循环中使用这个 promise:
response.items.forEach(function(item) {
notPurchased(item).then(function() {
DB.storeItem(item);
});
});
这是一个好的方法吗?我对 NodeJS 没有足够的经验,在我看来,为简单的 bool 函数定义一个 Promise 有点棘手。
【问题讨论】:
标签: javascript node.js promise es6-promise