2017-02-16 6 views
-1

私は、コールバック関数NotInDatabase()を渡し、isValidEmail関数を実行する次のイベントリスナーを構築しました。このコールバック関数は、ajax呼び出しの完了後にのみ実行するようにスケジュールされています。 NotInDatabase()はすぐに実行されますが、表示されます。なぜこれが起こっているのだろうか?最初に実行されるjavascript es6コールバック

イベントリスナー:あなたはisValidEmailにコールバックとしてNotInDatabase関数を渡すが、それが返すものを渡すことはありません。ここ

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; 
} 
+0

https://quirksmode.org/js/events_tradmod.html#link2 – Bergi

答えて

1

isValidEmail('http://localhost:3001/user/email/'+emailValue,'data_placeholder', NotInDatabase()) 

:コールバックと

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 NotInDatabase()は機能ですイオンコール。

+0

や他の言葉であなたの問題を解決するために()を代わりにコールバックを渡すので、あなたがリターンを渡し、それを呼んでいる。削除 – Carcigenicate

+0

ああ、感謝します、ありがとう! – jj1111

関連する問題