как передать динамическую переменную в метод setInterval - PullRequest
0 голосов
/ 25 марта 2019

Я хочу обновлять / перезагружать метод каждые 30 секунд.но я не могу отправить данные переменной в другую функцию, т.е. setInterval.how для передачи переменной в методе setInterval. При добавлении статической переменной она работает, но как я могу передать идентификатор методу setInterval

 var app = angular.module('PIR_Detection', []);
    app.controller('myCtrl', function ($scope, $http, $window) {
        $scope.sel_val = 0;
        $scope.DefaultLabel = "Loading.....";
        var post = $http({
            method: "get",
            url: "../data.json",
            dataType: 'json',
            data: {},
            headers: { "Content-Type": "application/json" }
        });
        post.success(function (data, status) {
            $scope.Customers = data;
        });
        post.error(function (data, status) {
        });

        $scope.getPIRData = function (id) {
            var url = "/PIRDetails/GetPIRStatus/" + id;


            $http.get(url)
                .then(function (response) {
                    $scope.myWelcome = response.data;
                    $scope.pirstatus = base64toHEX($scope.myWelcome.dataFrame);
                    $scope.timestamp = getIST (response.data.timestamp);
                    $scope.rssi = response.data.rssi;
                    deviceid = id;

                });
        };
        setInterval(function () {
            $scope.getPIRData("100010102");//unable to pass id here
        }, 30000) 

});

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

вы можете сделать это по-разному,

пример:

//set data
window.deviceId=Id

и используйте его в settimout

setInterval(function () {
            $scope.getPIRData(window.deviceId);//unable to pass id here
        }, 30000)

но вы можете объявить любую глобальную переменную из внешней области settimeout, тогда эта переменная будет доступна в функции обратного вызова settimeout, потому что тогда она будет обрабатываться как Closures

0 голосов
/ 25 марта 2019

Предоставлено @tvanfosson:

Возможно, вы хотите иметь функцию, которая создает интервальный таймер для вас. Передайте параметр в функцию, чтобы его значение регистрировалось при закрытии функции и сохранялось до истечения таймера.

function createInterval(f,dynamicParameter,interval) { setInterval(function() { f(dynamicParameter); }, interval); }

Затем назовите его как createInterval(funca,dynamicValue,500); Очевидно, вы можете расширить это для более чем одного параметра. И, пожалуйста, используйте более описательные имена переменных. :)

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