调用1或2个异步函数的最佳实践

时间:2017-08-31 14:55:35

标签: swift grand-central-dispatch

我的博客文章存储在远程数据库中。用户可以对每个帖子进行评分和/或评论。所以我需要发出1或2个不同的网络请求。但我必须等到他们(或它)完成。

以下方案的最佳做法是什么:

func updateRatingAndComment (){
        if commentTextView.text != "" {
            updateComment()
        }
        if ratingView.rating != 0.0 {
            updateRating()
        }
    }

updateComment()updateRating()是Alamofire电话。

我尝试使用调度组但失败了。我正在考虑使用回调,但这对我来说似乎没有意义。

1 个答案:

答案 0 :(得分:2)

试试这个:

let group = DispatchGroup() // Controller property

 .....
        if commentTextView.text != "" {
            group.enter()
            updateComment() // self?.group.leave() inside callback
        }
        if ratingView.rating != 0.0 {
            group.enter()
            updateRating() // self?.group.leave() inside callback
        }

        group.notify(queue: .main) { [weak self] in
            // Do something
        }
....