2016-05-10 44 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