1

これを機能させるのに問題があります。

var Browser = require('zombie');
var browser = new Browser({
 debug: true
})



function getPredictions(){
    var prediction = ['5', '7', '9', '11', '14', '18'];
    for(i in prediction){
        sendPrediction(prediction[i]);
    }
}

function sendPrediction(prediction){
    browser.visit('http://localhost:3000/prediction.php', function (error, browser){
        browser.fill('#prediction', prediction);
        browser.pressButton('Send', function (error, browser){
            if(browser.html == 'correct'){
                console.log('The correct prediction is ' + prediction +'');
            }else{
                console.log('The prediction ' + prediction + ' is incorrect.');
            }
        });
    });
}

getPredictions();

基本的に、配列からサーバーに渡す4つの予測すべてで、それが正しい予測であるかどうかを確認できるようにしたいと思います。「9」は正しい予測ですが、browser.htmlが「正しい」場合でもすべてが無効であることがわかります。

どうすればこれを機能させることができますか?私は何が間違っているのですか?

4

1 に答える 1

0

あなたはゾンビブラウザの同じインスタンスを再利用していると思います。このようにコードを書き直してみてください。メソッドは、前のgetPredictionメソッドが完了して解析されるまで「待機」します (next引数に注意してください)。

function getPredictions(){
    var i = -1, prediction = ['5', '7', '9', '11', '14', '18'];
    var next = function() {
        i++;
        if(i < prediction.length)
            sendPrediction(prediction[i], next);
    }
    next();
}

function sendPrediction(prediction, next){
    browser.visit('http://localhost:3000/prediction.php', function (error, browser){
        browser.fill('#prediction', prediction);
        browser.pressButton('Send', function (error, browser){
            if(browser.html == 'correct'){
                console.log('The correct prediction is ' + prediction +'');
            }else{
                console.log('The prediction ' + prediction + ' is incorrect.');
            }
            next();
        });
    });
}

Browserまた、予測をチェックするたびに新しいインスタンスを作成しようとするかもしれません

function sendPrediction(prediction){
    var browser = new Browser({ debug: true });
    browser.visit('http://localhost:3000/prediction.php', function (error, browser){
        browser.fill('#prediction', prediction);
        browser.pressButton('Send', function (error, browser){
            if(browser.html == 'correct'){
                console.log('The correct prediction is ' + prediction +'');
            }else{
                console.log('The prediction ' + prediction + ' is incorrect.');
            }
        });
    });
}
于 2012-08-29T15:29:49.440 に答える