需求背景
D3 tooltip内容过多,需要展示滚动条。鼠标离开定位后,立刻触发mouseout,此时tooltip会隐藏。但是,需求是不能隐藏。那么久从离开到隐藏之间,存在一定时间的隐藏。
用delay实现
# 全局变量控制
cancelDealHandler(){
if(something){ //取消
cancle = true;
}else {
cancle = false;
}
}
line.on('mouseover',() => {
//触发tooltip显示
showTip();
}).on('mouseout',() => {
_.delay(() => {
if(cancle){ //取消隐藏,全局变量控制
return;
}
hideTip();
},3000);
})
;
上述方法实现总结
- 确实能做到tip显示控制
- 不过,存在严重缺陷,小伙伴你知道吗?
我们查看下delay源码
/**
* Invokes `func` after `wait` milliseconds. Any additional arguments are
* provided to `func` when it's invoked.
*
* @since 0.1.0
* @category Function
* @param {Function} func The function to delay.
* @par