Передача объекта внутрь пожарного магазина clouser / escapeing - PullRequest
0 голосов
/ 02 февраля 2019
func snapshotHourlyJobDriverAssignedRoute(driver: Driver, driver_id: String, daily_job_id: String, handler: @escaping (DriverAssignedHourlyJob, Driver) -> ()) {
    //takes a few seconds to run
    reference(collectionReference: .drivers_assigned_hourly).document(driver_id).collection(DataCollectionReference.daily_jobs.rawValue).document(daily_job_id).addSnapshotListener { (snapshot, error) in

        if let error = error {
            print("DEVELOPER ERROR: \(error.localizedDescription)")
            return
        }

        guard let documentData = snapshot?.data() else { return }

        //populate my driver object...

        handler(driverHourlyJobRoute, driver)

    }
}

У меня проблема с кодом выше, когда переменная драйвера, которую я передаю в первый раз, не совпадает с той, которую возвращает мой обработчик.Я попытался поместить тело функции в блок синхронизации, но поскольку вызов firestore находится в другом потоке, он не синхронизируется правильно.Я также пытался подождать секунду до вызова базы данных, но это не сработало.

Прямо сейчас, если я вызову свою функцию пять раз, она вернет только последний вызов, и первые четыре будут потеряны.Моя цель - отвечать на каждый звонок.

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