February 2018
Intermediate to advanced
350 pages
7h 35m
English
Now, let's rework our example with coroutines:
import kotlinx.coroutines.experimental.Deferredimport kotlinx.coroutines.experimental.asyncimport kotlinx.coroutines.experimental.launchimport kotlinx.coroutines.experimental.runBlockingclass CoroutineUserService(private val userClient: UserClient, private val factClient: FactClient, private val userRepository: UserRepository, private val factRepository: FactRepository) : UserService { override fun getFact(id: UserId): Fact = runBlocking { val user = async { userRepository.getUserById(id) }.await() if (user == null) { val userFromService = async { userClient.getUser(id) }.await() launch { userRepository.insertUser(userFromService) } getFact(userFromService) } else { async { factRepository ...
Read now
Unlock full access