【问题标题】:Cancel firebase function取消firebase功能
【发布时间】:2020-05-30 03:46:54
【问题描述】:

是否可以在请求期间取消 Firebase HTTPS Callable 功能? 我有一些预测搜索的功能。每次用户在搜索字段中输入字符时都会调用它。

代码:

func startSearch(_ query: String, completion: @escaping (_ results: [SearcheResults]) -> Void) {

    let data = [
        "query": query
    ]

    functions.httpsCallable("startSearch").call(data) { (result, error) in

        if error != nil {
          completion([])
      } else if let data = result?.data {
            // some data manipulations
            completion(elements)
        }
    }
}

或者也许以某种方式忽略早期的完成?因为目前,如果用户非常快速地输入文本,例如“Berlin” - 完成将触发 6 次。我想要一种方法来取消某个函数或取消以前的完成。

提前致谢。

【问题讨论】:

    标签: ios swift firebase google-cloud-functions


    【解决方案1】:

    您应该尝试去抖动,基本上在debounce 中,在您发出请求之前等待很短的跨度(例如:- 2 秒),如果用户再次输入该跨度,计时器会再次重置为 2 秒,请检查link

    一旦调用无法取消,它将被执行到完成或超时。

    【讨论】:

    • 谢谢,我去看看。
    【解决方案2】:

    一旦你调用了一个可调用函数,它就不能被取消。该函数将运行到完成或超时。您需要确保在客户端上确实要调用该函数。您没有义务使用结果(如果需要,您可以忽略它),但事务将完成,除非客户端应用程序在此过程中死亡。在这种情况下,后端的功能仍然会完成,但它无法传递响应。

    【讨论】:

    • 我可以取消 URLSession 请求,为什么我不能取消 firebase 函数请求?
    • 你实际上并没有取消,它只是停止等待
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多