【发布时间】:2016-11-03 15:05:05
【问题描述】:
我看到了一个类似的问题here,它没有解决我的问题。我试图每 10 小时运行一次 cron 作业,让我首先获取类别,然后根据类别,我找到每个类别的信息。我怎样才能简化下面的承诺。我没有使用 Bluebird 或 Q,这是原生 JS 的承诺。老实说,下面的代码看起来就像 Promise 应该避免的回调地狱,任何建议
flipkart.getAllOffers = function () {
interval(43200, () => {
flipkart.findAllCategories()
.then((categories) => {
flipkart.save('flipkart_categories.json', categories)
if (categories) {
for (let item of categories) {
flipkart.findAllForCategory(item.category, item.top)
.then((items) => {
flipkart.save('flipkart_top_' + item.category + '.json', items)
}).catch((error) => {
console.log(error)
})
}
}
})
.catch((error) => {
console.log(error)
})
})
}
function interval(seconds, callback) {
callback();
return setInterval(callback, seconds * 1000);
}
【问题讨论】:
-
首先,您使用的缩进比需要的多。通过将
.then()处理程序置于另一个缩进级别,您累积的缩进量比需要的多得多。这是个人风格的事情,但不是必需的,并且会创建比简单阅读代码所需的更多的缩进。
标签: promise es6-promise