单击后如何延迟js功能

时间:2017-09-25 00:14:22

标签: javascript jquery

我想在点击按钮获取一些数据后添加延迟。 该脚本在浏览器控制台中运行。

$(pages())获取分页按钮。

var request = require("request");
request(url)
.on('response', function(response) {
    console.log(response.statusCode); // 200
    console.log(/* I need to get response body string here */); // <--- can I have the response body as a string here?
})
.on("error", function(err){
    console.log("Problem reaching URL: ", err);
});

2 个答案:

答案 0 :(得分:1)

您可以使用$.map().delay().queue().promise()

$(() => {
  $("a").on("click", e => {
    e.preventDefault();
    console.log("clicked")
  });

  $({}).queue("pages"
  , $.map($("a") /* Array.from({length:callPagesCount}, (_, i) => i + 1) */ 
  , (el, i) =>
    (next) => {
      el.click();
      /*
      $(pages()).find('a')[i].click()
      */
      $({}).delay(1000 /* 200 */ , "delay")
        .queue(_next => {
          /*
          callsNode().map((i, el) => {
            calls.push({
              call_condition: $(el).find('div > span').text().trim(),
              date: $(el).find('div').text().trim().match(/\[(.+)\]/i),
            })
          })
          */
          _next();
        }).dequeue("delay")
        .promise("delay").then(next)
    }
  )).dequeue("pages");
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<a href="">a</a>
<a href="">b</a>

答案 1 :(得分:0)

延迟JavaScript的一种简单方法是使用setTimeout函数。

setTimeout((() => {
    // do something after a delay
}), 200);

200更改为您想要等待的时间(以毫秒为单位)。

在您的情况下,看起来您想将callNodes.map()...放在setTimeout中:

  let calls = [];  
  for (let i = 1; i <= callPagesCount; i++) {
    $(pages()).find('a')[i].click()

    setTimeout((() => {
        // Call the below, 200 ms later
        callsNode().map((i, el) => {
          calls.push({
            call_condition: $(el).find('div > span').text().trim(),
            date: $(el).find('div').text().trim().match(/\[(.+)\]/i),
          })
        })
    }), 200);


  }