我已經構建了以下事件偵聽器,它將運行函數isValidEmail,傳遞一個回調函數NotInDatabase(),該函數僅在ajax調用完成後才運行。它似乎雖然NotInDatabase()立即運行。任何想法爲什麼會發生?JavaScript es6回調第一次運行
事件偵聽器:
const bindEvents = (form, inputSelector, errorSelector) => {
const emailInput = document.getElementById('email');
emailInput.addEventListener('blur', function(){
const emailValue = emailInput.value
isValidEmail('http://localhost:3001/user/email/'+emailValue,'data_placeholder', NotInDatabase())
});
}
isValidEmail有回調:
const isValidEmail = (url, data, success) => {
const xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.open('POST', url);
xhr.onreadystatechange = function() {
if (xhr.readyState>3 && xhr.status==200) {
success(xhr.responseText);
}
};
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin');
xhr.send(data);
return xhr;
}
https://quirksmode.org/js/events_tradmod.html#link2 – Bergi