#javascript
Вопрос:
Это и есть код
const setError = "";
function validate() {
return new Promise((resolve, reject) => {
const exp = RegExp("w @example.com").test("sfsdf@gmail.com");
console.log(exp);
if (!exp) {
setError = "Email Not Valid!";
}
console.log("The value is" setError);
if (setError != "") {
reject();
} else {
resolve();
}
});
}
validate()
.then(() => {
console.log("Resolved");
})
.catch(() => {
console.log("Rejected");
});
Когда я запускаю его, я получаю следующий вывод,
false
Rejected
Почему именно вторая консоль.войдите в не выполненную функцию проверки?
Комментарии:
1.Вы также должны поместить
let setError=""
внутри функции validate передreturn
оператором. Как размещеноvalidate
, не будут отправлены действительные электронные письма, потому что предыдущий звонок был по неверному адресу электронной почты.
Ответ №1:
setError
не должно быть константой, когда вы пытаетесь изменить ее значение, она выдает ошибку и отклоняет обещание.
let setError = "";
Ответ №2:
Поскольку вы назначаете const setError
, это вызывает ошибку во время выполнения и останавливает выполнение функции.
const
не может быть повторно назначен после инициализации. Создание этого let
решает проблему
let setError = "";
function validate() {
return new Promise((resolve, reject) => {
const exp = RegExp("w @example.com").test("sfsdf@gmail.com");
console.log(exp);
if (!exp) {
setError = "Email Not Valid!";
}
console.log("The value is" setError);
if (setError != "") {
reject();
} else {
resolve();
}
});
}
validate()
.then(() => {
console.log("Resolved");
})
.catch(() => {
console.log("Rejected");
});
Ответ №3:
Второе console.log
не срабатывает, потому setError
что является постоянным и не может быть изменено. Изменение const
на let
должно генерировать результат, который вы ожидаете:
false
The value isEmail Not Valid!
Rejected
Ответ №4:
Причина , по которой вы не видите второго console.log
, заключается в том, что setError
это a const
, поэтому, как только вы попытаетесь присвоить ему новое значение, он выдаст ошибку и перейдет в catch
блок.
Попробуйте это вместо этого:
var setError = "";