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
}
我有以下代码,但不起作用。
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
}