取消向服务器发送删除请求的操作后,应用程序崩溃
Posted
技术标签:
【中文标题】取消向服务器发送删除请求的操作后,应用程序崩溃【英文标题】:After cancelling an action to send a delete request to the server, the app crashes 【发布时间】:2021-07-16 16:51:28 【问题描述】:我正在使用 axios 发出 HTTP 请求
这是我删除数据库中用户的功能,我使用的是作为依赖项安装的 json-server
const deleteThisPerson = (id) =>
// console.log(`$name is being deleted`);
contactServices
.remove(id)
.then(() =>
const currentContacts = persons.filter(person => person.id !== id)
setPersons(currentContacts)
)
.catch(error => console.log(error))
我的 http 删除请求是这样的
const remove = (id) =>
if (window.confirm(`Delete user?`))
const request = axios.delete(`$baseUrl/$id`)
return request.then(response => response.data)
else
return false
我有一个window.confirm()
,当用户尝试从数据库中删除资源时,它会弹出,如果我点击Ok
,它会工作,但如果我点击Cancel
,它会崩溃,我收到以下错误消息@ 987654326@
我该如何纠正这个问题?
【问题讨论】:
【参考方案1】:在else
分支中,您返回的false
没有then
属性(false.then
是undefined
)。你可以使用Promise.reject
来返回一个被拒绝的承诺。
const remove = (id) =>
if (window.confirm('Delete user?'))
// ...
else
return Promise.reject(new Error('Request cancelled'))
您也可以省略 else
子句,因为您是从 if
分支返回的。
const remove = (id) =>
if (window.confirm('Delete user?'))
// ...
return Promise.reject(new Error('Request cancelled'))
【讨论】:
在我的情况下我会做 request.reject( //...) 吗?或 Promise.reject(//...) @utsavojha95 你应该使用Promise.reject(...)
。你不能在request
上调用reject
,它是块作用域到if
分支。以上是关于取消向服务器发送删除请求的操作后,应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章