在下面的函数中,我想确保首先完成tooltip("destroy")
,然后执行下一行takeScreenshot()
。不幸的是,Bootstrap官方文档指出tooltip("destroy")
是一个异步函数,因此在下面的代码中,takeScreenshot()
甚至在工具提示被销毁之前都已执行。
当前,我尝试了2种方法:
方法1:使用异步-等待:这不能解决问题。
方法2:使用setTimeout延迟执行takeScreenshot()
。这解决了问题,但似乎是hack,而不是标准解决方案。
在Javascript或Jquery中是否可以解决此问题?
下面是我的代码无法同步工作:(
const processScreenshot = () => {
$('#draggableDiv').tooltip("destroy"); // this line is asynchronous in nature
takeScreenshot() // this line gets executed 1st before previous line returns
}
答案 0 :(得分:2)
因为您提到的是“ destroy”而不是dispose(Bootstrap 4使用dispose代替destroy),所以我认为您使用的是Bootstrap3.x。有了这个假设,您应该可以像这样监听'hidden.bs.tooltip':
$('#myTooltip').on('hidden.bs.tooltip', function () {
// do something…
})
参考:https://getbootstrap.com/docs/3.3/javascript/#tooltips,并确认预期的行为/合并请求得到解决的地方:https://github.com/twbs/bootstrap/issues/13031
这样可以确保您至少已隐藏工具提示。我看不到任何实际被破坏的事件。