Mat*_*ank 7 javascript onkeypress async-await
我想编写一个readKey功能为async,然后await在浏览器中按每个键。
我想将其构建为全部基于async-的同步,外观正常的代码await。
因此,我可以编写一个readLine函数,await readKey()直到用户单击[enter]为止,如果用户单击[back]等,则删除最后一个键,等等。
然后我可以编写函数await readLine(),并编写调用它们的函数,等等。
我只是不知道如何弥合编写document.onkeypress处理程序...和将该事件中的键放入async readKey我要编写的某些函数之间的差距。在其他语言中,我可以使用其他多线程原语到达那里,但是我不知道如何在js中使用。我试图找出是否有某种方法可以yield实现价值,但是我也看不出如何做到这一点。
是。让我们分解一下:
是否可以等待自定义的东西?
是的-您可以等待任何一个Promise。例如,要等待超时:
const timerPromise = new Promise(resolve => setTimeout(resolve, 1000));
await timerPromise;
Run Code Online (Sandbox Code Playgroud)
是否可以承诺按键?
是的-当事件发生时兑现承诺。
function readKey() {
return new Promise(resolve => {
window.addEventListener('keypress', resolve, {once:true});
});
}
Run Code Online (Sandbox Code Playgroud)
感谢@Kornel和@ Xotic750,这就是我想要的:
const readKey = () => new Promise(resolve => window.addEventListener('keypress', resolve, { once: true }));
(async function() {
console.log('Press a key');
const x = await readKey();
console.log('Pressed', String.fromCharCode(x.which));
console.log('Press a key');
const y = await readKey();
console.log('Pressed', String.fromCharCode(y.which));
}());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3200 次 |
| 最近记录: |