如何确保一个函数在另外两个之后再运行,其中可能有一个甚至都不会运行?

我知道标题并不是太清楚,但是我不写整个问题就无法很好地解释。

我有三个函数,为简单起见,我们假设它们是a()、b()和c(),我需要做的是在a()和b()都运行之后才运行c(),通常我可以简单地做些这样的事情:

function a()
    --code--
    a_is_done = true
    c()
end

function b()
    --code--
    b_is_done = true
    c()
end

function c()
    if a_is_done and b_is_done then
        --code---
        a_is_done = false
        b_is_done = false
    end
end

但是有些情况下,a()或b()可能都不会被调用,但我仍然需要c()发生,因为a()和b()是来自其他代码的回调,我永远无法知道它们是否都发生了以及以何种顺序,我该如何处理呢?

点赞