gpt4 book ai didi

javascript - Jquery async/await ajax 调用

转载 作者:行者123 更新时间:2023-12-05 01:13:24 25 4
gpt4 key购买 nike

我目前正在使用 3 种 ajax 调用方法(其中 3 种是连续执行的)。我必须在第二次 ajax 调用和第三次调用之间有时间延迟。如果我在第二个 ajax 中添加“async:false”,一切都会像魅力一样。但是,我发现这确实是一种糟糕的做法,不应该使用。所以我决定尝试异步/等待。这是我第一次,所以没有运气。如果你们可以添加一些解释以便我学习,我将非常感激。太感谢了。

//This is the second ajax method that I've been trying to use async/await
async function InsertAssignments(data) {
var insertNewData = api + "/Point/insert_data/";
await $.ajax({
type: "POST",
url: insertNewData + data,
dataType: "json",
data: data,
timeout: 30000,
success: function (data) {
$("#mainGrid").data("kendoGrid").dataSource.read();
$("#ListBox1").data("kendoListBox").dataSource.read();
$("#ListBox2").data("kendoListBox").dataSource.read();
},
error: function (xhr, status, error) {
$('#gridMessage').html(xhr.responseText).css("color", "red");
}
});
}

然后我在某处调用 InsertAssignments(data)。

最佳答案

  1. Async/await 需要函数返回一个 promise 。
  2. jQuery $.ajax() 可以通过两种方式使用:回调和 promise 。您的代码使用的是回调,而不是 promise 。

$.ajax() 包装在这样的函数中:

async function doAjax(url, params = {}, method = 'POST') {
return $.ajax({
url: url,
type: method,
dataType: 'json',
data: params
});
}

然后在进行 ajax 调用时使用 await doAjax()

async function InsertAssignments(data) {
const insertNewData = api + '/Point/insert_data/';
try {
// You can make multiple ajax calls
// Response data is stored in result
const result = await doAjax(insertNewData, data);
} catch (error) {
console.log('Error! InsertAssignments:', error);
$('#gridMessage').html(error.message).css('color', 'red');
}
}

关于javascript - Jquery async/await ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60349890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com