2017-01-06 13 views
1

Я использую swift perfect 2.0, и мне нужно вызвать функцию через 10 секунд. Я могу заставить его работать на обычном приложении IOS с этим кодом:Использование диспетчерской очереди в swift 3 perfect 2.0

let when = DispatchTime.now() + 10 
DispatchQueue.main.asyncAfter(deadline: when){ 
    //call function 
} 

Но я не могу сделать это в скор совершенен, и я не знаю, как работать Arround. Это структура моего запроса:

public func InsertPost(_ request: HTTPRequest, response: HTTPResponse) 

    //logic 

    response.status = .custom(code: 200, message: "Success!") 
    response.completed() 

    //here i want to send a notification to some users, but only after 10 seconds. 
    //So i try to call function sendNotifications() like this: 

    let when = DispatchTime.now() + 10 
    DispatchQueue.main.asyncAfter(deadline: when){ 
     sendNotifications() 
    } 
{ 

Он никогда не называет sendNotifications(), даже если я поместить его перед response.completed(), и я, наверное, думает неправильно. Итак, мой вопрос в том, есть ли другой способ использовать Dispatchqueues в идеальном 2.0? Они, похоже, не работают.

ответ

2

Хорошо, теперь я понимаю. Я не могу блокировать основную очередь быстрым совершенством.

решение:

let backgroundQueue = DispatchQueue(label: "com.app.queue", qos: .background, target: nil) 

let when = DispatchTime.now() + 10 
backgroundQueue.asyncAfter(deadline: when){ 
    //call function 
} 
+0

Похоже, что мы не должны использовать основную очередь. Спасибо за совет –

1

Похоже, что у совершенного 2.0 есть собственные настройки управления потоками. Оформить заказ по этой ссылке:

http://perfect.org/docs/thread.html