3

我正在使用 PromiseKit 和 Moya 在下面的方法中发送一个长轮询请求:

func pullMessages() {

    let service = ChatServices()
    let request = service.pullMessages()
    self.request = request
    request.promise.then { [weak self] status -> Void in

        // If chat successfully established with the agent
        // navigate to chat screen or else try again. And if failure then show error message

        guard let `self` = self else { return }

        switch status {

        case .waiting:
            self.pullMessages()

        case .messages(let messages):
            for message: String in messages {
                self.addMessage(text: message, sender: self.agentSender())
            }
            self.pullMessages()

        case .chatEnded(let reason):
            if reason  == .agent {
                self.endChat(with: "Agent ended chat session")
            }

        case .failure:
            self.endChat(with: "Session lost")
        }

        }.catch { error in
            // Show error
            Log.warning(error.localizedDescription)
            self.endChat(with: "Session lost")
    }

}

一旦我离开视图,我正在使用 self.request 取消请求viewWillDisapear。但是在我离开视图后,一条新消息到达。“取消”请求返回消息。任何想法为什么会发生这种情况?

4

0 回答 0