Ich mache einen synchronen REST-API-Aufruf im Hauptthread. jQuery (oder Browser?) beschwert sich. Aber ich weiß nicht, wie man es asynchron programmiert, oder zumindest ist der Code weniger verwirrend zu lesen, wie er ist.jQuery synchroner REST-API-Aufruf schlägt fehl, Objekt zurückzugeben
Dies ist eine vereinfachte Version von dem, was ich tue:
<html>
<head>
<script type="text/javascript" src="/js/jquery.min.js" ></script>
</head>
<body>
<script type="text/javascript">
function get_foobar(val1, val2){
$.ajax({
url: 'http://localhost:8000/api/' + va1 + '/' + val2,
success: function (data) {
let my_object = $.parseJSON(data)
//console.log(data);
console.log(my_object);
let params = my_object['params'];
let blob = my_object['the_thing'];
var foobar = new FooBar(var1, var2, params, blob);
return foobar; // <- object created here ...
},
async: false
});
}
$(document.ready(function(){
foobar = get_foobar($('#field1').val, $('#field2').val());
console.log(foobar); // <- undefined here ... wtf?
});
</script>
</body>
</html>
Warum ist die Funktion nicht das foobar
Objekt zurückkehrt, die erstellt wird?
entfernen 'async: false' und der Browser über sync ajax auf dem Haupt-Thread beschwert wird gestoppt. – Trevor
'Ich mache eine asynchrone ...' dann machst du 'async: false' - ist es einfach du willst wissen, wie es geht? Diese widersprechen sich –
@DarrenSweeney: gut entdeckt.Eigentlich wollte ich SYNCHRON anrufen. Ich habe das gerade bemerkt und wollte gerade meinen Titel ändern, als du mich dazu geschlagen hast. –