收到新请求时取消先前的Express JS请求

时间:2020-07-17 22:02:38

标签: javascript node.js ajax express

在我的网站上,我有一个搜索按钮,该按钮通过AJAX进行发布,如下所示:

function submitSearch() { //Runs when the search button is clicked
     var xhttp = new XMLHttpRequest();
     xhttp.onreadystatechange = function() {
         if (this.readyState == 4 && this.status == 200) {
             //Do Some Stuff
         }
     };
     xhttp.open("POST", "/", true);
     xhttp.send("" + searchTerm);
}

在后端处理请求:

const express = require('express');
const app = express();
const { response, request } = require('express');
const bodyParser = require('body-parser');
const engines = require('consolidate');

app.engine('hbs', engines.handlebars);
app.set('views', './views');
app.set('view engine', 'hbs');
app.use(bodyParser.json());
var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.post('/', urlencodedParser, async (request, response) => {
    //Do Some Stuff
    response.send(searchResults)
}

如果用户输入新的搜索词并在从服务器接收到响应之前按下搜索按钮,我想取消先前的请求,因为我什至不再关心先前的响应。

我不想在等待响应时禁用按钮,然后在收到响应后重新启用它。

作为参考,我是nodejs和ajax的新手,并进行了表达,而大多数只是教程代码的合并。

有没有办法做到这一点?谢谢!

0 个答案:

没有答案