Pass arguments into ajax onreadystatechange callback?

后端 未结 3 1955
渐次进展
渐次进展 2020-12-01 10:27

What\'s the normal pure javascript (i.e. not JQuery) way to pass arguments into an anonymous onreadystatechange callback?

For example:

function doReq         


        
3条回答
  •  盖世英雄少女心
    2020-12-01 10:59

    Javascript supports closures, so the anonymous function you wrote will be able to access xhttp and msg from the enclosing doRequest() scope.

    If wanted to do this explicitly (say, if you want to define the callback function somewhere else in the code and reuse it), you could create a function that creates the callbacks. This also allows you to alias the variables to be accessible with different names (like x and m):

    function createCallback(x, m) {
        return function() {
            /* Do whatever */
        };
    }
    

    and then in doRequest(), do xhttp.onreadystatechange = createCallback(xhttp, msg);

    If all you wanted to do was 'rename' the variables, you can do this inline and anonymously:

    xhttp.onreadystatechange = (function(x, m) {
        return function() {
            /* Do stuff */
        }
    })(xhttp, msg);
    

提交回复
热议问题