Javascript 检查空对象并返回布尔值
我有一个Javascript 检查空对象并返回布尔值,javascript,reactjs,Javascript,Reactjs,我有一个AddContactForm表单,允许用户添加contacts 当用户填写conactNumber-onBlur时,它会检查此conactNumber是否已经存在 如何使CheckIfContactExists函数返回true或false而不是promise对象 请注意,我无法更改api返回的值,它只返回一个contact对象 export default class AddContactForm extends Component { state = { ... };
AddContactForm
表单,允许用户添加contacts
当用户填写conactNumber
-onBlur
时,它会检查此conactNumber
是否已经存在
如何使CheckIfContactExists
函数返回true
或false
而不是promise对象
请注意,我无法更改api返回的值,它只返回一个contact
对象
export default class AddContactForm extends Component {
state = {
...
};
checkContact = () => {
const { contactNumber } = this.state.newContactInfo;
CheckIfContactExists(contactNumber); //return promise
};
render() {
...
return (
...
);
}
}
const CheckIfContactExists = async searchString => {
const { data: contactsInfo } = await axios.get(`api/Contacts/SearchContact?contactNum=${searchString}`);
};
在checkContact中使用async Wait,就像您对
CheckIfContactExists
所做的那样。还可以从CheckIfContactExits
方法返回布尔结果
export default class AddContactForm extends Component {
state = {
...
};
checkContact = async () => {
const { contactNumber } = this.state.newContactInfo;
try {
const res = await CheckIfContactExists(contactNumber);
return res;
} catch (e) {
console.log('Error', error);
}
};
render() {
...
return (
...
);
}
}
const CheckIfContactExists = async searchString => {
const { data: contactsInfo } = await axios.get(`api/Contacts/SearchContact?contactNum=${searchString}`);
if (Object.keys(contactsInfo).length > 0) {
return true;
} else {
return false;
}
};
您不能让它只返回布尔值,因为它是一个异步操作。您还可以使
checkContact
功能async
,并等待它
示例
export default class AddContactForm extends Component {
state = {
// ...
};
checkContact = async () => {
const { contactNumber } = this.state.newContactInfo;
const contactInfo = await CheckIfContactExists(contactNumber);
this.setState({
contactNumberTaken: Object.keys(contactInfo).length !== 0
});
};
render() {
// ...
}
}
你不能,这是异步调用返回承诺时的情况,你可以将承诺解析为布尔值,但它仍然是一个承诺谢谢你的回答,但是if(contactsInfo)
将总是结果true
,没有分配任何属性的对象不被视为“空”。在这种情况下,只需检查对象键的大小即可。当我写下答案时,我的假设是contactsInfo返回未定义或null(如果找不到的话)。谢谢你的回答,但是Boolean(contactsInfo)
将始终导致true
,没有分配任何属性的对象不会被认为是“空的”。@user3378165这是真的。我更新了答案,检查返回的是不是空对象。