用户选择后的API调用

时间:2018-12-12 05:36:57

标签: angularjs checkbox selection

Um目前正在开发旧的Angular js应用程序。

这具有一系列复选框,用户可以在其中选择一个或多个选项。对于每个选择,它都会进行后端api调用。但我想避免对每个选择进行后端调用,而是允许用户进行几秒钟的选择,然后立即进行一次后端调用。我尝试通过$ timeout函数来实现它,即使它等待用户进行选择之前要等待几秒钟,但是在我选择/取消选择选项的时间内它确实会调用后端API。

朋克:sample plunker

非常感谢有人可以建议我解决方案。

谢谢

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是去抖动功能。给定一个以毫秒为单位的延迟,调用防抖动功能将启动一个计时器并在计时器达到0后执行。如果我们在计时器达到0之前再次调用同一功能,则计时器将重新启动。

如果用户经常单击复选框,这将防止后端被API垃圾邮件淹没。

有关去抖的更多信息,请查看以下链接(在节流阀中也有说明):https://codeburst.io/throttling-and-debouncing-in-javascript-b01cad5c8edf

答案 1 :(得分:0)

仅跟踪您是否正在等待调用后端怎么样?如果您在等待,请勿再次调用您的函数。未经测试的代码示例:

var waiting = false
$scope.toggleCheck = function (option, optionArray, channel) {
    var index = optionArray.indexOf(option);
    optionArray[index].checked = !(optionArray[index].checked);
    if (waiting == false) {
        waiting = true //set to true so backend will not be called multiple times
        $timeout(function () {
            waiting = false
            //call the backend api
            //access the statuses by $scope.statuses
            alert('backend call ' + $scope.statuses);
        }, 2000);
    }
}