Мне нужен совет о том, как мне достичь заявленного названия. Мой сценарий такой. У меня есть три метода в моем сервисе isUserEnable()
, isLicenseStatusEnable()
и resetPassword()
, и они должны выполняться последовательно. Во-первых, я должен убедиться, что пользователь включен. Если пользователь включен, я должен убедиться, что статус лицензии также включен. Наконец, теперь я могу выполнить метод сброса в моем сервисе. Если какой-либо из первых 2 методов вернет false
, то он должен прервать сброс пароля и не должен продолжать выполнять последующие методы.
Сервис
@Injectable({
providedIn: 'root'
})
export class PasswordResetService {
isUserEnable(user: string): Observable<boolean> {
return true;
}
isLicenseStatusEnable(user: string): Observable<boolean> {
return true
}
resetPassword() {
// reset password code
}
}
У меня есть код ниже и введите delay(5000)
для имитации выполнения. Но это не было выполнено один за другим. Я не уверен, как мне реализовать это, чтобы выполнить по одному.
/**
* Check user status
*/
userPasswordReset() {
let userEnabled ;
this.passwordResetService.isUserEnable('example_user')
.pipe(
tap(_ => TASKS_DATA[0].status = TaskStatus.Started),
delay(5000),
map(x => {
TASKS_DATA[0].taskdescription = "User is enable";
TASKS_DATA[0].status = TaskStatus.Success;
})
)
.subscribe(result => {
userEnabled = result;
});
this.passwordResetService.isLicenseStatusEnable('example_user')
.pipe(
tap(_ => TASKS_DATA[1].status = TaskStatus.Started),
delay(5000),
map(x => {
TASKS_DATA[1].taskdescription = "License is enable";
TASKS_DATA[1].status = TaskStatus.Success;
})
)
.subscribe(result => {
return result;
});
}
Любые предложения будут очень благодарны. ТИА!