q.all(_.map(_.range(Math.floor(MAX_JOBS/ONPAGE)), function(n) { var d = q.defer(); o.get('profiles/v2/search/jobs.json', {q: QUERY, paging: paging(n)}, function(error, data) { return error ? d.reject(error) : d.resolve(data.jobs); }); return d.promise; })).then(function(results) {
var poll = function(n) { if (n === undefined) n = 0; var addedJobs = function(jbs) { var added = []; var intersects = false; jbs.reverse().forEach(function(j) { if (!existingJobs[j.id]) { added.push(j); } else { intersects = true; } }); return [added.reverse(), intersects]; }; o.get('profiles/v2/search/jobs.json', {q: QUERY, paging: paging(n)}, function(error, data) { if (error) { console.error(error); setTimeout(poll, POLLING_INTERVAL); } else { var addedAndIntersects = addedJobs(data.jobs); var added = addedAndIntersects[0]; var intersects = addedAndIntersects[1]; if (!intersects) { console.error('not intersects', n+1); poll(n+1); } else { if (added.length > 0) jobsEmitter.emit('added', added); setTimeout(poll, POLLING_INTERVAL); } } }); };