Javascript 如果返回为空,如何让函数继续
我正在开发聊天应用程序,现在我正在开发创建新聊天的功能。为了防止用户能够创建重复的聊天记录,我提出了这个方法 user1是预定义的。user2是通过在表单中输入来定义的。handleSubmit检查是否已经存在,如果“isChat”从我的数据库返回一个id,用户将被重定向到已经存在的聊天 我的另一部分有问题。如果“isChat”未定义,我的函数将不会继续并在第一个等待函数处停止Javascript 如果返回为空,如何让函数继续,javascript,reactjs,Javascript,Reactjs,我正在开发聊天应用程序,现在我正在开发创建新聊天的功能。为了防止用户能够创建重复的聊天记录,我提出了这个方法 user1是预定义的。user2是通过在表单中输入来定义的。handleSubmit检查是否已经存在,如果“isChat”从我的数据库返回一个id,用户将被重定向到已经存在的聊天 我的另一部分有问题。如果“isChat”未定义,我的函数将不会继续并在第一个等待函数处停止 async function handleSubmit(event) { event.preventDef
async function handleSubmit(event) {
event.preventDefault();
const isChat = await getChatId(user1, user2);
if (isChat) {
setChatId(isChat);
setDefinedPartnerName(true);
} else {
await initiateNewChat(user1, user2, messages);
const chatId = await getChatId(user1, user2);
setChatId(chatId);
setDefinedPartnerName(true);
}
}
这是我对这件事的看法:
//Get chat ID by user1 and user2
export async function getChatId(user1, user2) {
return fetch(`/api/${user1}/${user2}`, {
method: 'GET'
})
.then(response => {
if (response.status !== 200) {
throw new Error(response.statusText);
}
return response;
})
.then(response => response.json());
}
如果没有这两个用户的记录,此函数将无法返回任何内容。可能是由于“抛出”导致的错误 尝试: 还可以改进错误处理的语法:
在我的快速路线上解决了这个问题 我的express route有一个try…catch函数,我给它的catch部分一个
response.json(false)代码>
这是一个修补程序。但我真的不想在后端的东西上花太多时间
谢谢大家的帮助是的。如果服务器上的两个用户之间没有通信,mongoose会告诉我“无法读取未定义的属性'\u id',”函数的第一部分工作正常。(如果已经有通信)如果有任何错误,您应该在第二部分中有一个.catch(err=>{return{}})
块``
export async function getChatId(user1, user2) {
return fetch(`/api/${user1}/${user2}`, {
method: 'GET'
})
.then(response => {
if (response.status !== 200) {
// throw new Error(response.statusText);
return false;
}else{
return response;
}
})
.then(response => response.json());
}