私の問題を解決しない同様の質問hereがありました。私は最初にカテゴリを取得し、次にカテゴリに基づいて、各カテゴリの情報を見つけることができる10時間ごとにcronジョブを実行しようとしています。どうすれば下のPromiseを簡略化できますか?私はBluebirdまたはQを使用していません。これはネイティブJSの約束です。同じコールバック地獄の約束を避けるようになっていたように正直なところ、以下のコードは、あなただけの.then()
のためにインデントの余分なレベルの使用を停止する場合は、あなたは非常に単純な構造を持って、任意の提案then節から約束の配列を返すことができます
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()'ハンドラをさらに別のインデントレベルに置くと、必要以上にインデントが溜まります。それは個人的なスタイルのことですが、必要ではなく、単純なコードの読み取りに必要以上にインデントを作成します。 – jfriend00