setTimeout函数比它应该更快

时间:2016-03-11 13:49:24

标签: javascript node.js selenium webstorm

我在selenium测试中有以下功能,并且setTimeout功能总是比它应该快25%。在这种情况下,要等待20秒,并在15秒后完成功能。

test.describe('basic login test',function(){
    this.timeout(timeout);
    // variables
    test.before(...);

    test.it.only('Test', function(done){
        testLoginPage.load().then(...)
        .then(...).then(...)
        .then(...).then(...)
        .then(function(){
            var first = "1st: " + new Date().getTime();
            console.log(first);    
            setTimeout(function(){
                driver.getTitle().then(function(title){
                    assert.equal(title, 'Tittle', 'Error.');
                });
                console.log(first);
                console.log("2nd: " + new Date().getTime());
                done();
            }, 20000);
       }).then(...)
    });
    test.after();
});

输出:

1st: 1457706590459
1st: 1457706590459
2nd: 1457706605462

1 个答案:

答案 0 :(得分:5)

除了下列情况外,不可能。

  • 您正在使用的代码或库有一个重写的自定义setTimeout函数,并且它用较短的毫秒调用实际的setTimeout函数。

  • 您正在使用JavaScript运行时(非常旧),非常非常关键问题。

  • 其他一些function正在两者之间打印(虽然看起来不像你的代码)