2运行我的按钮操作的函数
favorite1 = (id,sender_id) => {
if(this.state["like"+id]==true){
this.setState({["like"+id]:false})
}else{
this.setState({["like"+id]:true})}
//async or timeout how run 3-5 second for last result ----> this.favorite2(id,sender_id)
}favorite1函数是用于样式的按钮操作,但是要很慢地单击按钮操作,我希望在运行最后结果后的3秒或5秒后运行favorite2函数,用于favorite1 (id,sender_id)、超时或asyn,如何解决此问题?
favorite2 = (id,sender_id) => {
// get or post process for favorite1 result
}发布于 2018-11-08 10:19:48
只需使用标准的反跳功能:
function debounce(func, threshold, execAsap) {
var timeout = null;
return function() {
var obj = this, args = arguments;
if (timeout) {
clearTimeout(timeout);
} else if (execAsap) {
func.apply(obj, args);
}
timeout = window.setTimeout(function() {
if (!execAsap) {
func.apply(obj, args);
}
timeout = null;
}, threshold || 200);
};
};
favorite2_deb3000 = debounce(favorite2, 3000); // 3000 miliseconds
favorite1 = (id,sender_id) => {
favorite2_deb3000(id,sender_id);
}发布于 2018-11-08 10:27:00
您可以使用异步等待。
async favorite1 = (id,sender_id) => {
if(this.state["like"+id]==true){
this.setState({["like"+id]:false})
}else{
this.setState({["like"+id]:true}
}
//async or timeout how run 3-5 second for last result ----> this.favorite2(id,sender_id)
// waits for 5 second
let result = await favorite2(id,sender_id);
}
favorite2 = (id,sender_id) => {
setTimeout(function(){
// get or post process for favorite1 result
}, 5000);
}https://stackoverflow.com/questions/53204716
复制相似问题