我正在通过HTTP向服务器发出请求,以查看是否存在具有特定电子邮件的用户。
function userExists(id) {
return makeHttpRequestToServer(id)
.then((response) => {
if (response === 200) {
// User exists in the database
} else if (response === 404) {
// User does not exist in the database
}
});
}
我不确定如何处理resolve
/ reject
来电:
resolve()
,在数据库中找不到用户时reject()
吗?resolve(true)
,在数据库中找不到用户时accept(false)
吗?答案 0 :(得分:4)
您应该使用resolve
返回任何非错误响应,reject
仅用于错误和例外。
在数据库中搜索不包含该条目的特定条目不一定是错误,因此您应该resolve(false)
。
function userExists(id) {
return makeHttpRequestToServer(id)
.then((response) => {
if (response === 200) {
// User exists in the database
resolve(true);
} else if (response === 404) {
// User does not exist in the database
resolve(false);
} else {
// Something bad happened
reject(new Error("An error occurred"));
}
});
}
这样可以更容易区分返回false
和发生错误。
处理回调时,通常会保留第一个返回的错误响应参数,以及返回值的其余参数。
function userExists(id, callback) {
makeHttpRequestToServer(id)
.then((response) => {
if (response === 200) {
// User exists in the database
callback(undefined, true);
} else if (response === 404) {
// User does not exist in the database
callback(undefined, false);
} else {
// Something bad happened
callback(new Error(response));
}
}
}