我在這裏使用nodejs請求模塊:https://github.com/mikeal/request - 存在涉及的Cookie,但不包含此代碼的一部分。nodejs/JavaScript變量保留其舊值?
原諒非優化代碼,我一直在嘗試各種東西試圖解決這個問題沒有成功。我有這個簡單的腳本:
function getPage(curpage)
{
if(curpage <= pages)
{
var newpage = curpage + 1;
console.log('getting page '+newpage);
request.get({ uri: 'http://someurl.com/test', qs: { p : newpage }}, function(error, response, body) {
if(error)
{
[...]
}
else
{
console.log(response.req.path);
}
getPage(newpage);
});
}
else
{
console.log("We're done!\n");
process.exit();
}
}
這裏的問題,是我response.req.path似乎變得停留在2我得到:
getting page 1
/id/bradpitt5/inventoryhistory?p=1
getting page 2
/id/bradpitt5/inventoryhistory?p=2
getting page 3
/id/bradpitt5/inventoryhistory?p=2
getting page 4
/id/bradpitt5/inventoryhistory?p=2
正如你所看到的,「NEWPAGE」在獲取頁面時正確使用,但請求路徑設置錯誤?我無法理解這一點。任何人都可以找出我在這裏做錯了嗎?
我剛從getPage(0)開始;
我也做這個使用不同的方法,只是爲了確保我是不是瘋了:
for(var i = 1; i <= pages; i++) {
urls.push({'url' : 'http://somepage.com/test?p='+ i, 'done' : false });
}
function getNextPage() {
for(var i = 0; i < pages; i++) {
if(urls[i].done == false) {
break;
}
}
if(urls[i] && urls[i].done == false) {
urls[i].done = true;
console.log('requesting: '+ urls[ i ].url);
request.get(urls[ i ].url, function(error, response, body) {
if(error) {
[...]
} else {
console.log('received: '+ response.req.path +' ok. ');
}
getNextPage();
}
);
} else {
console.log("we're done!");
process.exit();
}
}
這也被卡在第2頁。
如果你改變從遞歸到迭代的流程,你仍然得到相同的結果嗎? – user1
我改變了這個完整的循環經過一個數組進行測試,我得到了同樣的結果。 – ruinernix