想要顺序调用函数 F, 但 F 里存在异步调用, 有什么可能的方案?

比如我有三个函数, 我开始是想要顺序 a, F, b:

x = function
  a()
  F()
  b()
end

但是后来出现需求, F 是一个异步的函数, 但为了方便, 我不打算改 x 的定义.
就是说, 我希望 F() 仍然保持这样的写法, 但是会处理到 F 当中的异步调用..

首先, 这在很多语言里是做不到的...

所以不限制编程语言的话, 是否有方案做到?

阅读 3.1k
评论
    5 个回答
    • 80
    package main
    
    import "fmt"
    
    func a() {
        fmt.Println("func a()")
    }
    
    func b() {
        fmt.Println("func b()")
    }
    
    func main() {
    
        a()
        ch := make(chan int)
    
        go func() {
            fmt.Println("func f do something")
            <-ch
        }()
    
        b()
        ch <- 1
    
        fmt.Println("DONE")
    }