亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

d3.timer 是否在重新運行之前等待回調完成?

d3.timer 是否在重新運行之前等待回調完成?

哆啦的時光機 2023-06-09 15:45:58
d3.timer 的文檔如下:d3.timer(回調[, 延遲[, 時間]]) <>安排一個新的計時器,重復調用指定的回調,直到計時器停止??梢灾付ㄒ粋€可選的以毫秒為單位的數字延遲,以在延遲后調用給定的回調;如果未指定延遲,則默認為零。延遲是相對于指定時間的毫秒數;如果未指定時間,則默認為現在。“重復調用指定的回調”是什么意思?更準確地說,d3.timer 是否等待回調完成,然后再次運行?
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

這取決于你所說的“等待回調完成”的意思。它是同步運行(因此連續運行)的非常慢的函數嗎?好的。


d3.timer(() => {

  const now = Date.now();

  while(Date.now() - now < 1000) {}; // do nothing, but keep the process engaged

  console.log("Ping");

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

但如果它是一個異步函數——比如一個 API 調用——它會取消進程的調度,那么就不會。


let i = 0,

  j = 0;

d3.timer(() => {

  // Break after 100 iterations

  if(j > 100) {

    return true;

  }


  // do nothing, but release the process

  // so the thread can go do other things

  console.log("Scheduled promise", j);

  j++;

  

  return new Promise((resolve) => {

    setTimeout(() => {

      resolve(i);

      console.log("Resolved promise", i);

      i++;

    }, 1000);

  });

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>


查看完整回答
反對 回復 2023-06-09
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號