Hi Ich bin ein Anfänger Programmierer und ich muss mehrere Javascript-Funktionen in einer Reihenfolge auf einer Seite ausführen; getcampaignID()
, search1()
, searchresult()
, search2()
, searchresult()
. Ich muss die Kampagnen-ID zuerst abrufen, um sie an search1()
zu senden, das Ergebnis zu erhalten und dann search2()
auszuführen, um das Ergebnis als nächstes zu erhalten.
Ich habe lief erfolgreich [search1()
+ searchresult()
] vor [search2()
+ searchresult()
] durch die search1()
nach dem </body>
Tag und Ausführen eines SetTimeout in searchresult()
hinzufügen. Aber ich bin nicht in der Lage getcampaignID laufen zunächst ohne search1()
und search2()
zu brechenSo führen Sie asynchrone Javascript-Funktionen in der Reihenfolge
Mein Code sieht wie folgt aus: home.html
<script>
getcampaignID() {
//...make AJAX call to get campaignID
campaignID = xmlhttp.responseText.trim();
}
getcampaignID(); //run function
searchresult() {
//...retrieves search results
//...appends to html div
setTimeout(function() {
if (counter == 0) {
counter = 1;
search2();
} else {
clearTimeout(timer);
}
}, 500);
} //end of searchresults
search1() {
//...search1 parameters
//url=?camid = campaignID
//campaignID unidentified
}
search2() {
//...search2 parameters
//url=?camid = campaignID
//campaignID unidentified
}
</script>
<body>
<div id= results1>...</div>
<div id= results2>...</div>
</body>
<script>
search1();
</script>
Dinge, die ich versucht habe:
getcampaignID() {
//... all the codes mentioned
search1() {
alert("search1 working");
}
search2() {
alert("search2 working");
}
}
search1();
Problem: search1() wird nicht ausgeführt, keine Warnungen ausgelöst.
getcampaignID() {
var campaignid = "A";
big(campaignid);
}
big
function (campaignid) {
//..all codes
search1() {
alert("search1 working");
}
search2() {
alert("search2 working");
}
search1();
}
search1();
Problem: search1() wird nicht ausgeführt, keine Warnungen ausgelöst.
Zusammenfassung:
ich nach einem Weg suchen CampaignId Wert in search1();
vor search1 hinzufügen läuft
Sie haben links meisten interessanten Code aus. – Pointy
Als benutzerdefinierte Funktionen können Sie ihnen Argumente geben. Wo Sie 'function search1() {...}' und in den runden Klammern ein Argument 'function search1 (ID) {...};'.Wenn Sie es ausführen, tun Sie einfach 'search1 (campaignid);' und es wird das Argument als ID übergeben und Sie können es in Ihrer Funktion verwenden. – yomisimie
hey, der code ist voll mit ebay api begriffen, also versuche ich mein bestes, sie nicht zu benutzen! Ich habe gerade die Editionen 'search1 (Kampagne) {...}' und 'search1 (campaignid) ausprobiert;' und es hat nicht funktioniert. Ich denke, das liegt daran, dass die Funktion ausgeführt wird, bevor ich die Kampagnen-ID von meinem Ajax-Anruf –