Puedo console.log(arg) pero no arg.response. Curioso cuál es el motivo detrás de // editar: cuando consuelo log arg puedo ver claramente la propiedad de respuesta con datos
function doAjax(param, lambda) { let _xhttp = new XMLHttpRequest(); _xhttp.open("GET", param, true); _xhttp.send(); _xhttp.onload = lambda(_xhttp); } doAjax("ALL_FRAMES", function(arg) { console.log(arg.response); --> prints blank field in console //allFrames = JSON.parse(arg.response); });_xhttp.onload = lambda(_xhttp); Esto significa "llamar a lambda(_xhttp) inmediatamente y luego asignar su valor de retorno a _xhttp.onload ". En su lugar, desea asignar una función a onload , y esa función llamará a lambda más adelante:
_xhtttp.onload = () => lambda(_xhttp);// editar: cuando consuelo log arg puedo ver claramente la propiedad de respuesta con datos
Eso es solo una peculiaridad de la forma en que las herramientas de desarrollo manejan los objetos de registro. Al registrar un objeto, el objeto no se evalúa hasta que haga clic en el objeto en sus herramientas de desarrollo. Entonces, en el momento en que se ejecutó console.log , aún no tenía la respuesta, pero cuando hace clic, la tiene.