我意识到在某些功能的产品在 JavaScript 中可用的方式和具体情况方面,我缺少一些东西。
在我的 Angular 应用程序中,为了获取用户的姓名首字母,我正在解析从 API 返回的数据,并在两个不同的函数中检索 firstName 的第一个字母和 lastName 的第一个字母。这两个功能按预期工作,我可以在控制台中看到正确的结果:
getFirstNameFirstLetter() {
if (this.authenticationService.isAuthenticated()) {
const userObj = JSON.parse(sessionStorage.getItem('currentUser'));
const userInfo = userObj.data;
const firstName = userInfo.name.first;
const firstNameFirstLetter = firstName.trim().charAt(0);
console.log(firstNameFirstLetter);
return firstNameFirstLetter;
}
}
getLastNameFirstLetter() {
if (this.authenticationService.isAuthenticated()) {
const userObj = JSON.parse(sessionStorage.getItem('currentUser'));
const userInfo = userObj.data;
const lastName = userInfo.name.last;
const lastNameFirstLetter = lastName.trim().charAt(0);
console.log(lastNameFirstLetter);
return lastNameFirstLetter;
}
}
现在是我不完全理解的部分。然后当我传递这两个函数的返回值时,以获取首字母,如下所示:
getInitials(firstNameFirstLetter, lastNameFirstLetter) {
if (this.authenticationService.isAuthenticated()) {
if (!this.firstNameFirstLetter || !this.lastNameFirstLetter) {
console.log('Names not ready!');
return;
} else if (this.firstNameFirstLetter && this.lastNameFirstLetter) {
console.log(firstNameFirstLetter + lastNameFirstLetter);
return firstNameFirstLetter + lastNameFirstLetter;
}
}
}
...我得到“名字还没准备好!” 每次打印到控制台。
顺便说一句,我在 Angular 的 ngOnInit 生命周期钩子中运行这些函数,如下所示:
ngOnInit() {
this.getFirstNameFirstLetter();
this.getLastNameFirstLetter();
this.getInitials(this.firstNameFirstLetter, this.lastNameFirstLetter);
}
我知道这与什么时候可用有关,因为当我使用断点并调试传递给“getInitials()”函数的两个值时,我得到“未定义”。换句话说,该函数在运行时无法访问其他两个函数的返回值——因此我得到“名称未准备好!” 打印到控制台。我的问题是,我在架构上缺少什么来解决此类问题?