2017-01-06 2 views
1

Ich benutze swift perfect 2.0 und ich muss eine Funktion nach 10 Sekunden aufrufen. Ich kann es mit diesem Code auf einer normalen iOS-Anwendung funktioniert:Verwenden der Versandwarteschlange in swift 3 perfekt 2.0

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

Aber ich kann dies in geschickten perfekt nicht tun, und ich weiß nicht, wie nahe zu arbeiten. Dies ist die Struktur meiner Anfrage:

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() 
    } 
{ 

Es ruft nie sendNotifications(), auch wenn ich legen Sie es vor response.completed(), und ich bin wahrscheinlich denken falsch. Meine Frage ist also, gibt es eine andere Möglichkeit, Dispatchqueues in perfektem 2.0 zu verwenden? Sie scheinen nicht zu funktionieren.

Antwort

2

Ok, jetzt verstehe ich. Ich kann die Hauptwarteschlange in swift perfect nicht blockieren.

Lösung:

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

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

Sieht aus wie wir nicht die Hauptwarteschlange verwendet werden soll. Danke für den Tipp –

Verwandte Themen