【发布时间】:2018-05-29 11:57:47
【问题描述】:
我在遍历我的 Promises 和完成我的解析器代码时遇到了麻烦:
let startFrom = 0,
totalRecords = 10000,
doneRecords = 0
const rows = 10
const parserRequests = function () {
if (startFrom <= totalRecords) {
setTimeout(function () {
getParserOffers(startFrom)
startFrom += rows
parserRequests()
}, 2000)
}}
const getParserOffers = function (start) {
request({
uri: domain + '/lucene/search/filter?minPrice=0.00&maxPrice=639.63&stock=all&cat=0&sortOrder=added+desc&start=' + start + '&rows=' + rows + '&steam_app_id=&steam_category=&steam_prod_type=&includeOutOfStock=&includeFreeGames=false',
json: true
}).then(response => {
const promises = response.docs.map(doc => getOffersData(doc))
return Promise.all(promises)
}).then(gamesList => {
doneRecords += rows
console.log('Done records: ', doneRecords)
if (doneRecords >= totalRecords) {
process.exit()
}
}).catch(error => {
console.error('ERROR: Server did not respond')
})}
在递归 parserRequests 函数中,我迭代到 totalRecords 并在 getParserOffers 中获取 gamesList 后,我也每次迭代,当它完成时。问题是 doneRecords 也应该达到 10000 个数字才能执行 process.exit() 并停止程序,但它永远不会这样做,例如在 9750 上停止。可能是什么问题?谢谢你的帮助
【问题讨论】:
标签: javascript node.js recursion promise