|  | ||
|---|---|---|
| .. | ||
| api | ||
| src | ||
| test | ||
| README.md | ||
| build.gradle.kts | ||
| package.list | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	Module kotlinx-coroutines-play-services
Integration with Google Play Services Tasks API.
Extension functions:
| Name | Description | 
|---|---|
| Task.asDeferred | Converts a Task into a Deferred | 
| Task.await | Awaits for completion of the Task (cancellable) | 
| Deferred.asTask | Converts a deferred value to a Task | 
Example
Using Firebase APIs becomes simple:
FirebaseAuth.getInstance().signInAnonymously().await()
val snapshot = try {
    FirebaseFirestore.getInstance().document("users/$id").get().await() // Cancellable await
} catch (e: FirebaseFirestoreException) {
    // Handle exception
    return@async
}
// Do stuff
If the Task supports cancellation via passing a CancellationToken, pass the corresponding CancellationTokenSource to asDeferred or await to support bi-directional cancellation:
val cancellationTokenSource = CancellationTokenSource()
val currentLocationTask = fusedLocationProviderClient.getCurrentLocation(PRIORITY_HIGH_ACCURACY, cancellationTokenSource.token)
val currentLocation = currentLocationTask.await(cancellationTokenSource) // cancelling `await` also cancels `currentLocationTask`, and vice versa