Javascript阻止多次执行

时间:2019-06-04 13:36:11

标签: javascript web-services

我目前正在使用网络框架编写Python应用程序。我实现了一个调用javascript函数,调用Python WebService的表单。这些Web服务非常繁重,因此我想实现一种安全性,以避免多次运行javascript,并等待WS响应再允许另一个调用。

这是一段HTML:

<div class="form-group">
    <input onfocusout="ocr_on_fly(false, this)" onfocusin="ocr_on_fly(true, this)" type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
</div>

ocr_on_fly函数中JS中的WS调用:

onSelectEnd: function(img, selection){
    if(selection['width'] !== 0 && selection['height'] !== 0){
        $.post({
        url: "http://localhost:5000/pdf/ocr",
        data: {
            data: JSON.stringify({
                selection   : selection,
                fileName    : $('#my-image')[0].src.replace(/^.*[\\\/]/, ''),
                thumbSize   : {width: img.width, height:img.height}
            })
        }

        }).then(function(data) {
                input.value = data['result'];
        });
    }
}

我听说过setTimeout,但是不确定这是更好的方法,因为我不想在指定时间内阻止脚本的执行。该脚本可能需要0.1秒,而可能需要10秒或更多时间

预先感谢

1 个答案:

答案 0 :(得分:2)

您可以设置一个全局变量,然后在调用脚本时将其设置为true

然后,当响应完成时,将其设置为false

在发出请求之前检查此变量;如果已将其设置为true,请不要发出请求。