Error handling 从承诺中返回false:它应该解析(false)还是拒绝()?
我正在通过HTTP向服务器发出请求,以查看是否存在具有特定电子邮件的用户Error handling 从承诺中返回false:它应该解析(false)还是拒绝()?,error-handling,promise,Error Handling,Promise,我正在通过HTTP向服务器发出请求,以查看是否存在具有特定电子邮件的用户 函数userExists(id){ 返回makeHttpRequestToServer(id) 。然后((响应)=>{ 如果(响应===200){ //数据库中存在用户 }否则如果(响应===404){ //数据库中不存在用户 } }); } 我不确定如何处理解决/拒绝呼叫: 当在数据库中找到用户时,我应该resolve(),当在数据库中找不到用户时,我应该reject() 当在数据库中找到用户时,我应该resolve
函数userExists(id){
返回makeHttpRequestToServer(id)
。然后((响应)=>{
如果(响应===200){
//数据库中存在用户
}否则如果(响应===404){
//数据库中不存在用户
}
});
}
我不确定如何处理解决
/拒绝
呼叫:
- 当在数据库中找到用户时,我应该
,当在数据库中找不到用户时,我应该resolve()
reject()
- 当在数据库中找到用户时,我应该
,当在数据库中找不到用户时,我应该resolve(true)
accept(false)
resolve
返回任何非错误响应,而拒绝
仅用于错误和异常
在数据库中搜索不包含该条目的特定条目不一定是错误,因此您应该resolve(false)
函数userExists(id){
返回makeHttpRequestToServer(id)
。然后((响应)=>{
如果(响应===200){
//数据库中存在用户
决心(正确);
}否则如果(响应===404){
//数据库中不存在用户
决议(假);
}否则{
//发生了不好的事
拒绝(新错误(“发生错误”);
}
});
}
这使得更容易区分返回的false
,以及发生错误
在处理回调时,通常为错误响应保留第一个返回参数,为返回值保留其余参数
函数userExists(id,回调){
makeHttpRequestToServer(id)
。然后((响应)=>{
如果(响应===200){
//数据库中存在用户
回调(未定义,true);
}否则如果(响应===404){
//数据库中不存在用户
回调(未定义,false);
}否则{
//发生了不好的事
回调(新错误(响应));
}
}
}
在这个特定的示例中,您不需要使用Promise
包装器,因为makeHttpRequest
似乎已经返回了一个Promise。也许,显示一个具有回调的api吧?@DavinTryon您完全正确,Promise包装器是多余的。我已经删除了它,并添加了一小部分关于回调的内容。@DavinTryon好的,我知道了我刚刚意识到,Promise包装不是多余的,因为我需要它,这样我就可以拥有resolve
和reject
函数。