JavaScript: 异步取消 ondragstart

JavaScript: Cancelling ondragstart asynchronously

我有以下代码,但不起作用。

    export function makeDraggable(htmlElement: any, dotnetCallbackObject: any): void {
    let onDragStart = async (event: any) => {
        let mayDrag: boolean = await someAsyncFunction('MayDrag');
        if (!mayDrag) {
            event.preventDefault();
            return false;
        }
        return true;
    };
    htmlElement.addEventListener('dragstart', onDragStart);
}

浏览器似乎没有等待异步功能完成,所以立即启用了拖动。我希望能够确定异步调用是否允许拖动。有办法实现吗?

事件处理程序是同步的,并且需要同步,以支持理智地冒泡和捕获。

您应该急切地缓存拖动的资格,并尝试在您的处理程序中访问该结果。

let isDraggable = false
getIsDraggable('maydrag').then((answer) => {
  isDraggable = answer
})
const onDragStart = (event) => {
  if (!isDraggable) {
    event.preventDefault();
  }
  return isDraggable
}