循环遍历数组,将数据传递给函数

时间:2012-07-11 08:38:32

标签: javascript node.js

我在使用它时遇到了一些麻烦。

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();

基本上,我从阵列传递到服务器的所有四个预测,我希望能够检查它是否是正确的预测。 '9'是正确的预测,但它告诉我,即使browser.html是'正确',它们都是无效的。

我怎样才能让它发挥作用?我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为你正在重复使用zombie-browser的同一个实例。尝试以这种方式重写代码。现在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.');
            }
        });
    });
}