首先,我指的是很多這樣的問題。但是我沒有找到合適的解決方案。我有兩個函式,其中一個回傳一個布林值。當我得到 true 的 bool 結果時,我想做點什么。以下代碼的問題是,
我首先看到此警報,警報(“請檢查姓名、電子郵件和訊息。確保您的電子郵件地址有效”);----(發表評論功能)
然后我看到這個警報, alert(data.status); ---- (IsValidEmail 函式)
最后我看到這個警報, alert("YES"); ---- (IsValidEmail 函式)
我希望 2 和 3 先執行,即在我做某事之前,我想要 PostComment 函式中的 IsValidEmail 函式的結果。請幫忙。
function IsValidEmail(emailAddress) {
response = $.get("https://isitarealemail.com/api/email/validate?email="
emailAddress,
function responseHandler(data) {
alert(data.status); // 2
if (data.status === 'valid') {
alert("YES"); //3
return true;
} else {
return false;
}
})
}
function PostComment() {
var name = $("#name").val();
var email = $("#email").val();
var message = $("#message").val();
var isValid = IsValidEmail(email);
if (name == '' || email == '' || !isValid || message == '') {
alert("Please check the name, email and message. Make sure your email address is valid"); //1
$("#btnPostComment").prop('disabled', false);
event.preventDefault();
$("#preloader").hide();
return;
}
$("#btnPostComment").prop('disabled', true);
$("#Posting").show();
var url = "/BlogData/PostComment";
var formData = new FormData();
formData.append("Name", name);
formData.append("Email", email);
formData.append("Comment", message);
formData.append("BlogId", @Model.Id);
$.ajax({
type: 'POST',
url: url,
data: formData,
processData: false,
contentType: false,
cache: false,
success: function (response) {
$("#preloader").show();
LoadPartialView(response.blogId);
$("#formPostComment")[0].reset();
},
failure: function (response) {
alert(response.responseText);
$("#preloader").hide();
},
error: function (response) {
alert(response.responseText);
$("#preloader").hide();
}
});
event.preventDefault();
}
PostComment 函式,我在提交表單時呼叫如下。
<form id="formPostComment" method="post" onsubmit="PostComment()">
uj5u.com熱心網友回復:
在您的情況下,您正在使用異步函式($.get),它繼續使用回呼函式執行responseHandler。并且returns在對父函式responseHandler沒有影響,在你的情況下回傳。為了能夠從呼叫其他一些異步函式的函式回傳一個值——您需要使用.IsValidEmailIsValidEmailvoidpromises
function IsValidEmail(emailAddress) {
return new Promise((resolve, reject) => {
$.get(
"https://isitarealemail.com/api/email/validate?email=" emailAddress,
function responseHandler(data) {
alert(data.status); // 2
if (data.status === "valid") {
alert("YES"); //3
resolve(true);
} else {
resolve(false);
}
}
);
});
}
PostComment對您來說,將函式標記為async函式并在其中使用會更容易await。
async function PostComment() {
// ...
const isValid = await IsValidEmail(email);
// ...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535693.html
標籤:查询形式
