我有一系列异步函数可以解决或拒绝。此功能必须以正确的顺序执行,并且彼此依赖。因此,我使用了3个异步功能和一个try catch块。问题是,当我拒绝异步函数中的某些promise时,catch块不会得到在拒绝回调上发送的错误。如何获得拒绝时发送的错误? (下面的代码)
还是应该使用Promise链接?我想避免这种情况...
@Database(entities = [Pews::class], version = 1)
abstract class PewDatabase : RoomDatabase() {
abstract fun pewDao() : PewDao
companion object {
@Volatile private var INSTANCE: PewDatabase? = null
fun getInstance(context: Context): PewDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: buildDatabase(context).also { INSTANCE = it }
}
private fun buildDatabase(context: Context) =
Room.databaseBuilder(context.applicationContext,
PewDatabase::class.java, "sample_db")
.allowMainThreadQueries()
.build()
}
}
答案 0 :(得分:1)
您不需要try/catch
。等待方法时,应使用Promise .catch
。
您也不需要return new Promise (...)
。
如果您的承诺被拒绝,它将进入该承诺的.catch
,与常规catch
不同。
您可以返回嵌套的承诺。
runMethods: () => {
return methods.methodOne()
.then(() => methods.methodTwo())
.then(output => methods.methodThree(output))
}
答案 1 :(得分:0)
我通常是这样来的。
<dx:ASPxListBox ID="cbCuentaContable"
runat="server"
Height="400px"
SelectionMode="CheckColumn"
Caption=""
Width="80%"
RepeatColumns="1"
TextField="Price"
ValueField="id"
ValueType="System.Int32"
Border-BorderStyle="None">
<CaptionSettings Position="Top" />
<Columns>
<dx:ListBoxColumn FieldName="Name" Caption="Model" Width="100%" />
<dx:ListBoxColumn FieldName="Price" Width="50px" />
</Columns>
<FilteringSettings ShowSearchUI="true" />
<ValidationSettings RequiredField-IsRequired="true"
Display="Dynamic"
ValidationGroup="datos"
ErrorDisplayMode="ImageWithTooltip"
CausesValidation="True">
<RequiredField IsRequired="True"
ErrorText="Se requiere al menos una cuenta contable"></RequiredField>
</ValidationSettings>
</dx:ASPxListBox>