我遇到了setTimeout()的问题,它似乎没有等待调用该函数。首先,我这样使用它:
NAME:
这不起作用,它会跳过延迟。所以我查了一下,显然将函数包装为匿名函数会解决它。所以我尝试了这个:
function function1(driver){
driver.get(secondaryUrl);
}
driver.get(initialUrl);
setTimeout(function1, 3000, driverInstance);
但是这样做也是如此,只需跳过延迟并在加载第一个URL后立即导航到第二个URL。任何人都可以帮我解决问题吗?感谢
答案 0 :(得分:0)
从中删除第三个参数:
setTimeout(function1, 3000, driverInstance);
应该是:
setTimeout(function () {
function1(driverInstance)
}, 3000);
答案 1 :(得分:0)
我不确定我是否理解正确,因为您的示例中缺少变量声明。
我假设您使用某种方法在JS中创建对象。并且您希望两次调用此方法之间有一些延迟。如果是这样,那么下面这样的代码应该可行。我已将get
方法替换为processUrl
。
var url1 = 'http://something';
var url2 = 'http://another';
function Driver( url ) {
this.processUrl = function( url ) {
// some logic with URL
console.log( url );
}
}
var driver = new Driver()
driver.processUrl( url1 );
function fun1( instance ) {
instance.processUrl( url2 )
}
setTimeout(fun1, 3000, driver);
甚至更简单的解决方案,而不使用其他功能:
var url1 = 'http://something';
var url2 = 'http://another';
function Driver( url ) {
this.processUrl = function( url ) {
// some logic with URL
console.log( url );
}
}
var driver = new Driver()
driver.processUrl( url1 );
setTimeout( driver.processUrl, 3000, url2 );
这里重要的是:缺少括号()
。在函数名末尾添加括号时,它将在代码处理时立即调用函数。您需要提供引用才能在3秒后调用该函数。