setTimeout javascript无法正常工作

时间:2016-10-23 19:17:13

标签: javascript phantomjs settimeout

我想知道我怎么能等待两次5秒并在每次等待时使用phantomjs做不同的事情。这是代码:

var page = require('webpage').create();

page.open("http://www.google.com/", function(status){

    var currentdate = new Date(); 

    console.log("\n\n" + currentdate.getHours() + ":" + currentdate.getMinutes() + ":" + currentdate.getSeconds() + "\n\n");


    setTimeout(function(){
        var currentdate1 = new Date(); 
        console.log("\n\n" + currentdate1.getHours() + ":" + currentdate1.getMinutes() + ":" + currentdate1.getSeconds() + "\n\n");
        return "hahaha";
    }, 5000);


    setTimeout(function(){
        var currentdate2 = new Date(); 
        console.log("\n\n" + currentdate2.getHours() + ":" + currentdate2.getMinutes() + ":" + currentdate2.getSeconds() + "\n\n");
        phantom.exit();
        return "hahaha";
    }, 5000);

});

为什么phantomjs第二个setTimeout函数不能正常工作?我怎么解决这个问题? 我想要实现的输出是:

16:13:10
16:13:15
16:13:20

而不是这样(就像现在一样):

16:13:10
16:13:15
16:13:15

抱歉我的英语不好。感谢

1 个答案:

答案 0 :(得分:2)

setTimeout是异步的,当你启动它时,代码不会停止运行,它继续运行其他部分,你开始第二个setTimeout。要解决您的问题,您需要将第二个超时的延迟更改为10000,或者需要在第一个超时内开始第二个超时。