Ich habe den folgenden Code, der eine Meldung zeigt an, ob ein Versprechen nicht nach fünf Sekunden zurückkehrt:zeigen eine Meldung auf Timeout, für nur 2 Sekunden
$timeout(function() {
if (!$scope.promiseComplete && $scope.submitted) {
$scope.message = {
content: [{
title: '',
msg: 'Service down - created'
}],
type: 'error'
};
return;
}
}, 5000)
Mein Dilemma ist, dass ich nur zeigen möchte Diese Nachricht selbst für zwei Sekunden. Ich habe folgendes versucht und es hat funktioniert, ist es ein Anti-Pattern, um Timeouts zu "nisten"?
$timeout(function() {
if (!$scope.promiseComplete && $scope.submitted) {
$scope.message = {
content: [{
title: '',
msg: 'Service down - Railcar ASN created'
}],
type: 'error'
};
$timeout(function(){
$scope.message = null;
}, 2000)
return;
}
}, 5000)
Update: basierend auf Antwort hier ist das, was mit Ich ging:
$timeout(function() {
if (!$scope.promiseComplete && $scope.submitted) {
$scope.message = {
content: [{
title: '',
msg: 'Service down - created'
}],
type: 'error'
};
return $timeout(function(){
$scope.message = null;
}, 2000)
}
}, 5000)
Ich bearbeite meinen Beitrag mit der aktualisierten Antwort ... soll das so aussehen? Ich bin auch verwirrt, wie kommt es, dass das äußere Timeout zuerst läuft, dann das innere? – devdropper87
Ja, so würde es aussehen. Die Reihenfolge der Ausführung ist die gleiche wie bei 'setTimeout'. Timeout-Callback-Funktion wird ausgelöst, sobald die Verzögerungszeit verstrichen ist, keine Millisekunde früher. – estus
Ich verstehe. Wäre es nicht besser, am äußeren Timeout eine Kette anzulegen, die das innere Timeout enthält? – devdropper87