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 находится в другом потоке, он не синхронизируется правильно.Я также пытался подождать секунду до вызова базы данных, но это не сработало.
Прямо сейчас, если я вызову свою функцию пять раз, она вернет только последний вызов, и первые четыре будут потеряны.Моя цель - отвечать на каждый звонок.