我有一个函数getNewProduct
,它应该返回类型为ProductCats
的对象。在此函数内部,我调用了Async
方法,并且应在协程范围内调用它的原因。这是代码:
private fun addProductCatAsync(pc: ProductCats) = viewModelScope.async {
withContext(Dispatchers.Default){
productService.addProductCatToServer(pc)
}
}
fun getNewProduct(pc: ProductCats) = viewModelScope.launch{
if (_newProduct.value == null) {
val res = addProductCatAsync(pc).await()
_newProduct.value = res
println("NEW PRODUCT INSIDE COROUTINE: ${_newProduct.value}")
return@launch res
}
return@launch _newProduct.value
}
但是在编译时出现了这个错误,返回的行是required: Unit, found: ProductCats?
。如何转换getNewProduct
函数并使它返回我想要的对象而不是job
?
答案 0 :(得分:0)
尝试一下
int64_t
答案 1 :(得分:0)
如果要取得结果,可以使用异步代替启动
fun getNewProduct(pc: ProductCats) = viewModelScope.async {
if (_newProduct.value == null) {
val res = addProductCatAsync(pc).await()
_newProduct.value = res
println("NEW PRODUCT INSIDE COROUTINE: ${_newProduct.value}")
}
_newProduct.value
}.await()