Отменить функцию Firebase - PullRequest
       0

Отменить функцию Firebase

0 голосов
/ 14 февраля 2020

Можно ли отменить функцию 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)
        }
    }
}

Или, может быть, как-то отклонить предыдущие завершения? Потому что сейчас, если пользователь очень быстрый и вводит текст, например «Берлин» - завершение сработает 6 раз. Я хотел бы иметь возможность отменить функцию или отменить предыдущие завершения.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2020

Вы должны попробовать debounce, в основном в debounce , прежде чем запустить запрос, вы ждете короткий промежуток времени (например, - 2 секунды), и если пользователь снова набирает этот промежуток, таймер снова сбрасывается на 2 секунд, проверьте ссылку

Как только вызов сделан, он не может быть отменен, он будет выполнен либо до завершения, либо по тайм-ауту.

1 голос
/ 14 февраля 2020

Как только вы вызываете вызываемую функцию, ее нельзя отменить. Функция будет выполнена до завершения или тайм-аута. Вам нужно быть уверенным на клиенте , что вы действительно хотите вызвать функцию. Вы ни в коем случае не обязаны использовать результат (вы можете игнорировать его, если хотите), но транзакция будет завершена, если клиентское приложение не умирает в процессе. В этом случае функция на бэкэнде все еще будет завершена, но она просто не сможет доставить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...