2016-05-10 64 views
2

是否可以在異步函數中使用event.preventDefault?異步函數中的event.preventDefault

我不確定,因爲必須同步調用event.preventDefault,並且異步函數返回承諾。

self.oncontextmenu = async function(event) { 
event.preventDefault() 
//await whatever 
} 
+1

您不能使用'preventDefault'異步,因爲事件處理是完全同步的。 (類似的問題:[與e.preventDefault()問題)(http://stackoverflow.com/questions/6100826)) –

+0

也許你應該給你一個更具體的例子,你正在嘗試做什麼。我不確定我是否理解你的目標,我有一種印象是你在混合一些東西。還承諾和異步是兩個不同的東西(雖然相關) – Pevara

回答

5

是的,這是完全可以調用preventDefault()async事件處理程序function。您只需確保在第一個await之前撥打電話,否則事件在功能恢復時已經發生。事件流將繼續,而不是等待事件處理程序返回的承諾。

+0

(有[[ExtendableEvent](https://developer.mozilla.org/en-US/docs/Web/API/ExtendableEvent)s「的實驗可以等待* some *承諾,但他們不是DOM事件,他們不需要對'async函數'做任何事情) – Bergi