Ich versuche JS zu lernen, indem ich eine zufällige Quote Machine erstelle, aber dieses Problem hat mich nervt. Ich sah die anderen Antworten, aber ich konnte sie aufgrund des fehlenden Kontextes wirklich nicht verstehen. Jede Hilfe wird geschätzt. Der Code ist:Wie führe ich einen Funktionsaufruf zuerst aus, bevor ich nachfolgende Codes ausführe?
$(document).ready(function() {
$("#btn").click(function() {
getQuote(); //This should execute first, then the next lines
var quoteData = jSonify();
var quote = quoteData[0];
var author = quoteData[1];
console.log(quote);
console.log(author);
console.log("Button Clicked");//This Should execute last.
});
//Get them quotes
function getQuote() {
$.ajax({
url: 'https://andruxnet-random-famous-quotes.p.mashape.com/?cat=famous',
type: 'GET',
data: {},
datatype: 'json',
success: function (data) { jSonify(data); },
error: function (err) { alert(err); },
beforeSend: function (xhr) {
xhr.setRequestHeader("X-Mashape-Authorization", "qKPbfOzWKemsh2qi30QgbOA1WufXp1ok1NsjsnAkvh6yVJfaAk");
}
});
}
//Convert to jSon
function jSonify(rawData) {
var jSonified = jQuery.parseJSON(rawData);
var quote = jSonified.quote;
var author = jSonified.author;
console.log(quote);
console.log(author);
return [quote, author];
}});
Ich habe über Callback-Funktion gelernt, wenn ich versuche, dies zu lösen, aber irgendwie konnte ich nicht herausfinden, wie man das in meinem eigenen Code verwendet. Danke, dass sie mich belehrt haben. Ich werde das jetzt versuchen und hoffentlich dieses Konzept der Callback-Funktionen verstehen. –
Ich verstehe es endlich. Ich rufe getQuote mit einer anderen Funktion als Parameter auf, und wenn getQuote den Teil 'success' ausführt, der einen Aufruf an den Parameter enthält, führt er den Parameter aus, der selbst eine Funktion ist, was ich brauchte. Wow, ordentlich !! Danke nochmal. –