Error handling 从承诺中返回false:它应该解析(false)还是拒绝()?

Error handling 从承诺中返回false:它应该解析(false)还是拒绝()?,error-handling,promise,Error Handling,Promise,我正在通过HTTP向服务器发出请求,以查看是否存在具有特定电子邮件的用户 函数userExists(id){ 返回makeHttpRequestToServer(id) 。然后((响应)=>{ 如果(响应===200){ //数据库中存在用户 }否则如果(响应===404){ //数据库中不存在用户 } }); } 我不确定如何处理解决/拒绝呼叫: 当在数据库中找到用户时,我应该resolve(),当在数据库中找不到用户时,我应该reject() 当在数据库中找到用户时,我应该resolve

我正在通过HTTP向服务器发出请求,以查看是否存在具有特定电子邮件的用户

函数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
函数。