そのため、Node でページ スクレーパーを作成していて、一連のコールバックで 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));
});
};
スクレイプは正常に機能し、Web サイトから一連のコンソール ダンプを取得します。ただし、それらすべてのタイムスタンプは同一です。コールバックは明らかに同時に終了していません (コールバック応答の間に最大数秒かかる場合があります)。
ここで関数のスコープについて何か不足していますか? 私が見たように、すべてのコールバックが Date.getTime() の同じインスタンスを参照している場合でも、コンソール ダンプは、個々のコールバックが戻るときにタイムスタンプを凍結する必要があります。
私が考えることができる唯一の説明は、コールバックが作成されたときに Date.getTime() 値が保存され、実際に起動したときに更新されないということです。
誰かがここで光を当てることができますか?