Ich versuche, eine eckige Form zu erstellen, wo der Benutzer Text eingibt und während er es tut der Text label unten sagen "Benutzer schreibt ...".kann nicht 2 js Funktionen mit Schlaf zwischen ihnen verwenden
Dann wartet es 200 Millisekunden und das Textlabel geht leer (der "Benutzer tippt" verschwindet).
Ich mache es mit angular ng-change Direktive. mein Code ist unten.
das Problem ist, dass aus irgendeinem Grund gibt es ein Problem mit der Hilfe-Methode, die ich für die Ausführung von 2 Methoden mit Schlaf zwischen ihnen geschrieben hat. aus irgendeinem Grund verschwindet der Text "Benutzer schreibt ..." nicht nach einem kurzen Schlaf.
warum ist das?
dank
angular.module('myApp', [])
.controller('myCtrl', ['$scope', function($scope) {
$scope.count = 0;
$scope.myFunc = function() {
runTwoFunctionWithSleepBetweenThem(function(){$scope.text='user is typing...';},function(){$scope.text='';},200);
};
var runTwoFunctionWithSleepBetweenThem = function(foo1,foo2, time) {
var sleep =function (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
foo1();
sleep(time).then(() => {
foo2();
});
}
}]);
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="myCtrl">
<p>Write something in the input field:</p>
<input type="text" ng-change="myFunc()" ng-model="myValue" />
<p>{{text}}</p>
</div>
</body>
</html>
es scheint, um Ihren Code durch die Zeit, aus dem Winkelumfang ist der Timeout ausgeführt wird, verwendet zu sein, versuchen Sie '$ Umfang zu verwenden. $ Apply' in Ihrem Timer-Rückruf ... –
Ich bin mir nicht sicher, aber ich denke, Sie müssen '$ scope. $ Apply()' aufrufen, damit die Änderungen an der Variable '$ scope.text' wirksam werden. – Titus