组合一些Alamofire进行排队的最佳方法是什么?

时间:2018-11-27 00:39:22

标签: swift alamofire nsoperationqueue

我是Swift的新手,对线程,操作,队列等几乎一无所知。例如,我的应用程序中有初始页面,我在其中使用3个alamofire请求,如下所示:

app.post("/account", function(req, res) {
    var address = req.body.address;
    var address2 = req.body.address2;
    var city = req.body.city;
    var updateAccount = {address: address, address2: address2, city: city};
    account.push(updateAccount); // error is being thrown here
    console.log("Updated data");
    res.redirect("/settings/account");
});

这意味着,request1 => request2 request3 => segue to the next view 1的请求是串行的,但是2可以是并行的,并且只有在所有请求都已完成并处理后才能进行筛选。

我尝试过3,至少速度更快=),但是在Xcode的控制台上,我发现两个Alamofire成功案例中的某些代码是在执行segue之后完成的。

那么,最多合并5个Alamofire 而不嵌套的最佳做法是什么?? 还是如何正确使用OperationsQueue处理异步功能?

1 个答案:

答案 0 :(得分:1)

DispatchGroup有时会导致诸如死锁之类的问题。您可以使用完成块。完成块函数是异步函数。

func 1(completion:@escaping () -> ()) {

   func 2(completion:@escaping () -> ()) {

      func 3(completion:@escaping () -> ()) {

       //You dont never know when func1 is finished. So you have to write nested functions. 
       //In this situation func2 waits func1. And func3 wait for func1 and func2. 
       //You can write the func3 at the top. This is you choice. 
      }

   }

}