微信開発のウィジェットでカウントダウンを実現


settimeout(func,time)は、timeミリ秒ごとにfunc関数を実行し、タイマー/クロックとしてよく使用することができる.
以下は微信ウィジェットでの使用構想であり,キー部分コードのみを切り取った.
var timer; //    

Page({
  // ...  
  
  //         
  startBtn: function () {
    console.log("    ");
    Countdown();
  },

  //           
  pauseBtn: function () { 
    console.log("    ");
    clearTimeout(timer);
  },
});

//    
function Countdown() {
  timer = setTimeout(function () {
    console.log("----Countdown----");
    Countdown();
  }, 1000);
};

考え方:
settimeout()は、ミリ秒数を指定した後に指定関数を実行し、settimeout()を再帰的に呼び出すことで各種タイマ機能を実現します.
毎秒1回のクロックをリフレッシュしたい場合は、時間変換関数を実行するたびにsetDataがインタフェースを更新するだけです.
cleartimeout(「タイマーの名前」)を使用して、指定したタイマーを停止します.
次はJavascriptの時間に関する変換関数です.
//    -->  : : 
function formatTime(seconds) {
    return [
        parseInt(seconds / 60 / 60), //  
        parseInt(seconds / 60 % 60), //  
        parseInt(seconds % 60)       //  
    ]
        .join(":")
        .replace(/\b(\d)\b/g, "0$1");
}

また、タイミング繰り返し呼び出し関数の機能をする場合は、setInterval()の代わりにsetTimeOut()を使います.setInterval()には誤差があるからです.詳細はこちら
参考資料:
https://www.w3cschool.cn/xiaochengxu/nsgq1u7h.html