setTimeout等待执行之后的事情

时间:2017-06-23 15:00:03

标签: javascript settimeout

我想知道在执行之后的事情时如何使setTimeout等待。



setTimeout( function() { console.log("First"); }, 5000 );
console.log("Second");




在控制台中我想看到: 第一 第二

"首先" 5秒后然后"秒"就在" First" 但真正发生的是我有"第二" 5秒后"第一"

如何解决这个问题?

5 个答案:

答案 0 :(得分:1)

如果IE is not priority并允许您使用Promise,那么您可以使用简单的wait函数作为setTimeout使用并返回Promise method chaining



function wait(t) {
   return new Promise(function(resolve) { 
       window.setTimeout(resolve, t)
   });
}

wait(5000)
.then(function(){ console.log("First"); })
.then(function(){ console.log("Second"); });




答案 1 :(得分:0)



setTimeout( function() { console.log("First"); }, 1000 );
setTimeout( function() { console.log("Second"); }, 1000 );




答案 2 :(得分:0)

  

我想知道在执行之后的事情时如何使setTimeout等待。

我认为“等待”的JavaScript函数是setTimeout。这意味着您可以通过将一个setTimeout函数嵌套在另一个函数中来实现此目的。

setTimeout(function() {
  setTimeout(function() {
    console.log('Second');
  }, 100);
  console.log('First');
}, 5000);

答案 3 :(得分:0)

如果您之后执行的不仅仅是控制台日志,您可以编写一个新函数以在setTimeout之后运行。记录“First”后,将出现“second”函数中的任何内容。

var second = function () {
    console.log("Second");
}

setTimeout( function() { 
    console.log("First");
    second();
}, 5000 );

答案 4 :(得分:-1)

Javascript不保证代码中的线性执行顺序。在引入超时或异步任务时,您不能指望您的代码逐行执行。

您可以在解析功能中打印两行:



self.driver.get('urls_from_command_line')