0

ここから nodejs リクエスト モジュールを使用しています: https://github.com/mikeal/request -- Cookie が含まれていますが、このコードの一部ではありません。

最適化されていないコードで申し訳ありませんが、この問題を解決するためにさまざまなことを試みましたが、成功しませんでした。私はこの簡単なスクリプトを持っています:

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 ページ目でスタックします。

4

2 に答える 2