как отправить только один запрос вместо нескольких запросов в angularjs? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть демо, в котором пользователь вводит что-либо в поле ввода и запрос отправляется на сервер. В настоящее время всякий раз, когда пользователь вводит, он запускает запрос. Я хочу, чтобы только один запрос сработал. Пример, если я наберу "abc", он сработает три запроса. Если это возможно, пользователь вводит что-либо без остановки, через одну секунду остановки Я сгенерирую запрос.

я знаю Входные данные могут быть опровергнуты с помощью директивы ng-model-options: но она срабатывает по истечении заданного времени, но я хочу, чтобы пользовательский тип оставался без остановки, но запрос на запуск после останова

Вот мой код:

http://plnkr.co/edit/npiA2abAo5SEQFMMpKZO?p=preview

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {
   $scope.name = 'World';


    $scope.keyupevt = function(){
       console.log('xx')
       $http.get("data.json")
            .then(function(response) {
               console.log(response)
            });
    }
});

1 Ответ

0 голосов
/ 05 ноября 2018

Внедрите свой собственный debouncing, используя setTimeout / clearTimeout, что-то вроде этого будет делать:

app.controller('MainCtrl', function($scope,$http) {
    $scope.name = 'World';

    var timeout = null;                                // the timeout handle
    $scope.keyupevt = function() {
       clearTimeout(timeout);                          // clear any previous timeout (if null, nothing will happen)

       timeout = setTimeout(function() {               // set a new timeout
           console.log('xx');                          // that will make the request after 1 second
           $http.get("data.json")
             .then(function(response) {
               console.log(response);
           });
           timeout = null;                             // reset timeout (not really necessary but it won't do any harm)
       }, 1000);                                       // the code inside will be called after exactly 1000 ms
    }
});

Каждый раз, когда клавиша нажата, будет установлен запрос на выполнение через 1 секунду после этого события нажатия клавиши. И если предыдущий запрос еще не был выполнен, запрос будет отменен, а новый будет установлен через 1 секунду. и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...