合并多个相同的延迟函数调用

我有一个场景,其中一个按钮触发了一个需要更新UI的更改,但是按钮的性质使得用户经常重复按下它,并且每次按下按钮时都运行updateUI()函数似乎过多。相反,我想使用以下方式延迟调用该函数:

    DispatchQueue.main.asyncAfter(deadline: .now() + 2.0, execute: {
        self.updateUI()
    })

但将所有这些相同的函数调用折叠为一个。

是否可以从DispatchQueue中删除重复的函数调用,或者有其他方法可以这样做?