Lässt sich vorstellen, dass ich einen Code haben:mit einem Rückruf eine Funktion Schreiben
var someString = "";
function do1(){
doA();
doB();
}
function doA(){
// some process that takes time and gets me a value
someString = // the value I got in prior line
function doB(){
//do something with someString;
}
Was ist der richtige Weg ist sicher, somestring zu machen, indem DOB definiert ist versucht, es zu benutzen? Ich denke, das ist eine Situation, die einen Rückruf erfordert, aber ich bin mir nicht sicher, wie ich das einrichten soll.
Was genau „etwas Prozess ist, dauert Zeit"? Ist es asynchron, d. H. Kehrt die Funktion zurück, bevor sie abgeschlossen ist? – Ryan
Ich denke, ich bin ein wenig verwirrt. Ich weiß, dass ich eine Lösung in Fällen benötigen würde, in denen der Code asynchron ist (wie etwas, das Ajax verwendet), aber es gibt immer einen Fall, wo DoB vor DoA ausführen könnte, nur weil doA sehr langsam ist (dh eine große Schleife), oder läuft Code immer Zeile für Zeile, wenn eine Zeile nicht asynchron ist? – COMisHARD
Nun ja. Wenn es asynchron ist, wird es nicht Zeile für Zeile ausgeführt. Wenn Sie innerhalb von doA() einen Ajax-Aufruf durchführen, ist es höchstwahrscheinlich asynchron (setzen Sie async nicht auf false). Wenn Sie eine riesige Schleife in doA() haben, die someString auf etwas setzt, wird dies immer noch vor doB() ausgeführt. Aber im Falle von großen Loops möchten Sie vielleicht einen Blick in Webworkers werfen, die es Ihnen ermöglichen, Multi Threading durchzuführen. – Thomas