ich eine Taste, die vier Funktionen mit ihm verbunden hat:javascript/AngularJS - Reihenfolge der Funktionsaufrufe
<button type="button" data-dismiss="modal" data-toggle= "modal" href="#booking" class="btn btn-success" ng-click="createResource(); cancelFirstModal(); confirmNumberOfBooking(); showSecondModal(); " >Create Bookings</button>
auf ng-click
, createResource()
ist zuerst genannt werden, dann confirmNumberOfBookings()
aber meine Konsolenausgabe in Safari sagt etwas anderes :
$scope.createResource = function() {
console.log('create is called');
$http.post('/api/v1/resource', $scope.newResource).then(function (response) {
console.log('post is called');
});
};
$scope.confirmNumberOfBooking = function(){
//$scope.numberOfBookings = 3;
console.log('confirm is called');
$scope.newResource.booking = [
{
startDateTime: "datetime",
endDateTime: "datetime"
}
];
for(var i = 0; i < $scope.newResource.numberOfBookings; i++){
$scope.newResource.booking.push({startDateTime: "datetime",endDateTime: "datetime"});
}
};
Meine Frage ist, warum zuletzt erhalten genannt wird $http.post
? Es wird technisch vor confirmNumberOfBookings()
erklärt.
das macht Sinn! Gibt es eine Möglichkeit, 'confirmNumberOfBookings()' aufzurufen, bevor das Versprechen gelöst wird? – asus
Ja, es gibt meinen Vorschlag, nur eine Funktion bei ng-click aufzurufen und den Fluss in dieser Funktion oder der Logik zu steuern, anstatt vom Fluss mit ng-click-Funktionsreihenfolge abhängig zu sein. Also zum Beispiel ng-click = "bookingConfirmation" $ scope.bookingConfirmation =() => {// createResource call wenn möglich mach es ein Versprechen, wenn Versprechen gelöst ist dann nur 2.Funktion aufrufen und so weiter. } –
Kommt auch darauf an, ob Ihre Funktionen synch oder async Funktionen sind. Wenn sie Synchronisierungsfunktionen sind, können Sie sich auf die Reihenfolge verlassen, in der sie aufgerufen werden, aber wenn sie nicht sicherstellen, dass Sie Versprechungen verwenden, so dass nur der nächste Schritt ausgeführt wird und es sinnvoll ist, die nächste Funktion aufzurufen. Überprüfen Sie diese Geige zum Beispiel. http://jsfiddle.net/perdeepOsingh/bu0ooz6b/2/ –