svelte - 在 TypeScript 中將 promise 傳遞給 addEventListener()?
在一個 SvelteKit 應用程式中,我正嘗試建立一個事件監聽器,以使用 TypeScript 執行一個非同步函數(一次變更)。
onMount(() => {
document.addEventListener('keyup', handleKeyPress);
});
我傳給 addEventListener 的參數是一個被定義為 async 的函數,內容是...
async function handleKeyPress(event: KeyboardEvent) {
if (mainList.length > 0) {
const press =
event.key === 'ArrowLeft' ? 'left' : event.key === 'ArrowRight' ? 'right' : null;
if (press) {
await moveItem(press);
}
}
}
你看,addEventListener 期待一個返回 void 的函數,所以我得到了這個錯誤:
Promise returned in function argument where a void return was expected. eslint有沒有方法解決這個錯誤?
答案#1
你本來就不應該這麼做;如果在銷毀時不移除它,你就會造成事件監聽器洩漏。
有用於向文件或視窗添加監聽器的特殊元素。
<svelte:document on:keyup={handleKeyPress} />
