jquery - NodeJS async/await 不等待先前的请求响应
问题描述
function getData(input) {
return new Promise((resolve, reject) => {
$.post({
url: baseurl,
data: input
}).done(function (result) {
resolve({ code: 200, data: result });
}).fail(function (result) {
resolve({ code: 400, data: result });
});
});
}
在按键时,我使用输入搜索参数调用了以下函数,但问题是在第一个请求/响应到来之前获得第二个请求/响应。
$("#searchText").on("keyup", async function () {
let search = $.trim($(this).val());
let result = await getData({ search: search });
});
解决方案
这是解决此问题的方法:
let latestSearch = "";
function getData(input) {
return new Promise((resolve, reject) => {
$.post({
url: baseurl,
data: input
}).done(function (result) {
resolve({ code: 200, data: result, search: input.search });
}).fail(function (result) {
resolve({ code: 400, data: result, search: input.search });
});
});
}
$("#searchText").on("keyup", function() {
let search = $.trim($(this).val());
latestSearch = search;
let result = await getData({ search: search });
if (result.search === latestSearch) {
// do something with the data...
}
});
推荐阅读
- python - 将列添加到扩展的 `pandas.DataFrame` 类
- amazon-cloudformation - 将 Yaml cloudformation 模板转换为 Json
- r - 如何从 R 中的 plot() 中提取散点图的数据
- mysql - MYSQL 根据 CASE 语句选择列
- python - Python C 扩展模块中的“PYVERNODOTS”是什么意思?
- testing - TestCafe 的错误代码 E26 是什么意思?
- android - 是否可以在 android/ios 本机应用程序中运行 PWA?
- java - 如何从附加到活动的片段中显示向上按钮?
- node.js - 在浏览器中隐藏 div 元素,但使用 jsPDF 打印元素
- r - 如何在不遇到内存问题的情况下对几百万行进行 vlookup?