2017-04-26 3 views
1

Ich begann JS und WebApi.Net zu lernen Mein Problem: Teil_2 durchgeführt vor Teil_1, aber manchmal funktioniert es richtig.Falsche konsistent von Ereignissen

//**** <part_1> **** 
var link = 'api/Values', 
    ttMass = new Array(); //make ToolTip array 

$(document).ready(function() { 
    $.get(link, { 
    i: 1 
    }, function(data) { //http-response as 'api/Values/1' 
    $.each(data, function(i, val) { 
     ttMass.push(val); 
    }); 
    }); 
}); 
//**** </part_1> **** 

//**** <part_2> ****   
$(document).ready(function() { // 
    $.get(link, { 
    i: 0 
    }, function(data) { //http-response as 'api/Values/0' 
    $.each(data, function(i, val) { 
     $(sel).append('<option value="' + val + '" data-toggle="tooltip" data-placement="right" title="' + ttMass[i] + '">' + val + '</option>'); //fill <select> values and ToolTip 
    }); 
    }); 
}); 
//**** </part_2> **** 

Wie machen diese Teile konsequent?

Antwort

1

Die Aufrufe $.get sind asynchron, daher kann die Reihenfolge ihrer Antwort nicht garantiert werden, da sie auf die Geschwindigkeit des Empfängerservers zurückzuführen ist.

Wenn Sie sicherstellen müssen, dass sie in der richtigen Reihenfolge ausgeführt werden, geben Sie einen Anruf in den Rückruf des anderen ein.

Beachten Sie auch, dass Ihr ttMass Array überflüssig ist, da sie exakt die gleichen Werte wie zurück in data enthält, so könnten Sie das direkt ohne die each() Schleife verwenden. Versuchen Sie Folgendes:

var link = 'api/Values'; 

$(document).ready(function() { 
    $.get(link, { i: 1 }, function(ttMass) { 
    $.get(link, { i: 0 }, function(data) { 
     var html = data.map(function(val, i) { 
     return '<option value="' + val + '" data-toggle="tooltip" data-placement="right" title="' + ttMass[i] + '">' + val + '</option>'; 
     }); 
     $(sel).append(html); 
    }); 
    }); 
}); 
+0

Ihr letzter Code funktioniert. Vielen Dank. Aber über diesen Code. Ich verstehe nicht, wo Sie 'ttMass' füllen –

+0

' $ .get (Link, {i: 1}, Funktion (ttMass) {'<- –

+0

Danke. Jetzt weiß ich mehr. –