Итак, я пишу скребок страницы в узле и получаю нечетное поведение от Date.getTime в наборе обратных вызовов.Date.getTime не продвигается в обратных вызовах
function projectScrape(urlList){
urlList.forEach(function(frag){
request(frag.url, (function(frag){
return function(err, resp, body){
if(err) console.log('error: ' + err);
project$ = cheerio.load(body);
var tempRecord = {
name: frag.name,
funding: project$('span.monthly_funding_goal_percentage').text($
subs: project$('span.number_of_subscribers').text(),
timestamp: myDate.getTime()
};
console.log(tempRecord);
}
})(frag));
});
};
Скребок отлично работает, и я получаю серию консольных отвалов с веб-сайта. Тем не менее, метка времени для всех из них идентична. Обратные вызовы явно не заканчиваются в одно и то же время (иногда до пары секунд между ответами обратного вызова) - так почему они привязаны к той же миллисекунде?
Я пропустил что-то о функции, охватывающей здесь? Как я вижу, даже если все обратные вызовы ссылаются на один и тот же экземпляр Date.getTime(), дампы консоли должны заморозить отметки времени, когда возвращаются отдельные обратные вызовы.
Единственное объяснение, о котором я могу думать, это то, что значение Date.getTime() сохраняется, когда обратные вызовы создаются и не обновляются, когда они фактически запускаются.
Может ли кто-нибудь пролить свет здесь?
перед установкой значения timestamp do var myDate = new Date(); – sachin
Как вы инициализировали 'myDate'? Если это определенный объект Date, указывающий на определенную временную метку, то, конечно, это не изменяется. – CBroe
@DanHeidel timestamp: new Date(). GetTime() – sachin