Как написать чистый код в Angular для подписки? Из-за асинхронной природы Angular Typescript, мы должны написать метод processItems()
в разных местах кода. Одно местоположение, без предупреждения о диалоговом окне, и местоположение в рамках закрытия подписки диалогового окна.
Есть ли способ централизовать код в одном месте?
В настоящее время:
public validateProductOrder(){
if (this.product.cost > 1000){
this.runMaterialDialogBoxWarning();
}
else if (this.product.addressType == 'International'){
this.sendConfirmationEmailCode();
this.runMaterialDialogBoxWarning();
}
else{
this.processItems();
}
public processItems(){
this.processOrderForm();
this.deliverShipping();
}
runMaterialDialogBoxWarning(){
materialDialogBoxRef.afterClosed().subscribe(result=> {
if (data.submit == true){
this.processItems(); // this is another location we have to write processItems();
});
Идеальный метод:
public validateProductOrder(){
if (this.product.cost > 1000){
this.runMaterialDialogBoxWarning();
this.processItems();
}
else if (this.product.addressType == 'International'){
this.sendConfirmationEmailCode();
this.runMaterialDialogBoxWarning();
this.processItems();
}
else{
this.processItems();
}
Если идеальный метод невозможен, то это прекрасно, просто любопытно. Выполнение задач с подпиской может затруднить отслеживание элементов.