非同期で重い処理

ソース

window.CP.PenTimer.MAX_TIME_IN_LOOP_WO_EXIT = 20000;

async function heavyProc() {
  // awaitがないとheavyProcは非同期にならないので1ms非同期処理を待つ処理を追加
 await new Promise(resolve => setTimeout(resolve, 1));
 console.log('start heavyProc:' + Date.now());

 const now = Date.now();
 // 同期的に10秒間待つ処理
 while (Date.now() - now < 10000) {if (window.CP.shouldStopExecution(0)) break;}window.CP.exitedLoop(0);
 console.log('end heavyProc:' + Date.now());
}

document.getElementById('heavy').addEventListener('click', function () {
 console.log('start clickHeavy:' + Date.now());
 const proc = heavyProc();
 console.log('end clickHeavy:' + Date.now());
});

document.getElementById('simple').addEventListener('click', function () {
 console.log('clickSimple:' + Date.now());
});