如果返回为空,如何让函数继续



我正在开发一个聊天应用程序,现在我正在研究创建新聊天的功能。为了防止用户能够创建重复的聊天,我想出了这个。

user1 是预定义的。user2 是通过在表单中输入来定义的。 handleSubmit 检查这是否已经存在,如果"isChat"从我的数据库中返回一个 ID,用户将被重定向到已经存在的聊天。

我对另一部分有麻烦。如果未定义"isChat",我的函数将不会继续并在第一个等待函数处停止。

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());
}

如果这两个用户没有记录,则此函数无法返回任何内容。

也许错误是通过"投掷"而落下的?

尝试:

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());
}

还可以改进错误处理的语法: https://www.tjvantoll.com/2015/09/13/fetch-and-errors/

在我的快速路线上解决了它。

我的快速路线有尝试...捕获功能,我给它的捕获部分一个response.json(false);

这是一个修补程序。但我真的不想在后端东西上花很多时间。

谢谢大家的帮助

最新更新