如何避免增量调用js函数

时间:2016-10-09 14:17:01

标签: javascript php jquery ajax

我正在用php和js开发一个应用程序。 我有一个带有一些项目的菜单边栏,当我点击一个项目时,使用jQuery加载功能,相应的php文件被加载到主容器上。 但是当我加载一个特定的php文件时,我有一个非常重要的问题。

这个想法是页面没有重新加载,所以我使用jQuery加载函数。 问题是这样的:我收取一个在某个点调用几个js函数的视图,然后我转到应用程序的另一部分,当我特别返回到该视图时,对此函数的调用会在更多时间内完成,如果我一次又一次地出去看,这个电话是3次,依此类推。

它使应用程序在一定时间内非常低,因为以增量方式调用的函数是具有ajax调用的js函数。

这是js文件的一部分

    $(document).ready(function(){       
        ObtenerNumPaciente();               
        actualizarMedicos();
        actualizarMutuales();           
        resetFormMedico();
        resetPracticas();       
        actualizarNomencladores();      
        $('#nombre').focus();           
    }); 

    $(document).keydown(function(key){
        if (key.which === 113)
        {
            key.preventDefault();               
            actualizarPacientes('key down'); //this is the function that is call several times
            $('#modal-pacientes').modal('show');
        }           
    });

function actualizarPacientes(origin){
        alert('this came from: ' + origin);
        $.ajax({
            type: 'GET',
            contentType: 'application/json',
            url: 'api/pacientes',
            dataType: 'json',
            beforeSend: function(xhr){
                xhr.setRequestHeader("Authorization", $.cookie('ApiKey'));
            },
            ...

有人可以帮我解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试在keydown本身之前添加var sum=0; for( var i=0; i<data.length; i++ ) sum += data[i]; return (sum & 0xFF);

unbind()

基本上,您将事件$(document).unbind('keydown').keydown(function(key){ 两次附加到文档元素。 Unbind只是“分离”事件监听器,确保函数内的代码触发一次。

因此,如果该元素具有 keydown 事件侦听器,则它将取消绑定旧的并附加新的。