在javascript中取消之前的请求

时间:2018-06-15 20:36:09

标签: javascript jquery

我有一个带有json数据的变量,当用户点击生成PDF时,它将启动PDF生成过程(注意没有ajax调用服务器)。让我们说数据足够大,根据数据大小生成PDF需要2到5分钟。同时,如果同一用户基于搜索条件发送另一个过滤该数据的请求,则有一种方法可以取消先前的请求。
P.S:我正在使用 jsdpdf 生成PDF和 alasql 来生成Excel

document.getElementById('btnPDF').addEventListener('click', function () {
     // Can we cancel previous request anywhere inside this block?
    $('.loader-modal').show(function () {
        DownloadPDF();
    });
});
function DownloadPDF() {
    // Very simple function just for demo purpose
    var columns = ["ID", "Name", "Description"];
    var rows = [
        [1, "Shaw", "HI"],
        [2, "Nelson", "I can be very long" ],
        [3, "Garcia", "Same here"]        
];

    // Only pt supported (not mm or in)
    var doc = new jsPDF('p', 'pt');
    doc.autoTable(columns, rows);
    doc.save('table.pdf');
}

问题陈述简化:
点击按钮A,一个函数被调用,它将向控制台写入一些数据,比如说1000次(只是为了引入时间因素)。当它的写入数据如果用户再次点击相同的按钮有没有办法取消以前的请求?
出于设计目的,我们希望用户能够随时再次点击该按钮(甚至在之前的请求未完成之前)并避免页面刷新。

0 个答案:

没有答案