为什么ENTER键会解除等待?

问题描述 投票:0回答:1

按钮执行“解决”功能并释放等待,正如预期的那样。
但随后 ENTER 键也会释放等待。 发生什么事了?

<html>
  <head>
    <title> Q:await </title>
    <meta charset="utf-8">
    <script>
  "use strict";
  let fnresolve, n=0; // globals
window.onload = function() {
  zlog('Hit the button, then the ENTER key');
  zlog();
  Main();
}
async function Main() {
  do {
    zlog('before wait', ++n);    
    let pMain = new Promise((res) => { fnresolve = res; } ); // save the res function
    await pMain;
    zlog('after wait', n); zlog('');    
  } while (1);
}
function zlog() {
  document.getElementById('zlog').innerHTML += (Object.values(arguments).join(', ')) + '</br />';
}
    </script>
  </head>
  <body>
  <button onclick='fnresolve();'> fnresolve </button>
  <div id='zlog'></div>  
  </body>
</html>
javascript async-await promise
1个回答
0
投票
表单中的

<button>
元素。在典型的 HTML 文档中,按
"ENTER"
键可以触发页面上的第一个按钮,就像单击一样。由于您的
fnresolve
函数与按钮的
onclick
事件相关联,因此按
"ENTER"
会触发此事件,从而解决承诺。

<button type="button" onclick='fnresolve();'> fnresolve </button>

© www.soinside.com 2019 - 2024. All rights reserved.