1

Swift Perfect 2.0 を使用しており、10 秒後に関数を呼び出す必要があります。次のコードを使用して、通常の iOS アプリケーションで動作させることができます。

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

しかし、私はこれを迅速に完璧に行うことができず、回避する方法がわかりません。これは私のリクエストの構造です:

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

response.completed()の前に配置しても、sendNotifications()を呼び出すことはありません。おそらく間違っていると思います。だから私の質問は、パーフェクト 2.0 で Dispatchqueues を使用する他の方法はありますか? それらは機能していないようです。

4

2 に答える 2

2

ああ、わかってるよ。Swift Perfect でメイン キューをブロックできません。

解決:

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

let when = DispatchTime.now() + 10
backgroundQueue.asyncAfter(deadline: when){
    //call function
}
于 2017-01-06T15:43:15.503 に答える
1

Perfect 2.0 には独自のスレッド管理設定があるようです。このリンクをチェックしてください:

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

于 2017-01-06T03:27:01.300 に答える