我是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
处理异步功能?
答案 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.
}
}
}