gpt4 book ai didi

javascript - 在所有其他 AJAX 调用之前发送 AJAX 调用

转载 作者:行者123 更新时间:2023-11-30 13:00:20 25 4
gpt4 key购买 nike

在我的网络应用程序上发送其他 AJAX 调用之前,我需要检查条件并运行 AJAX 调用。

我正在考虑将此 AJAX 调用放在 ajaxSetup 上的 beforeSend 中,使用 async: false(以防止我的初始调用在此调用完成之前运行)。

像这样:

//I set an event that fires:
$.ajax({
type: "GET",
url: my_url,
beforeSend: function() {
//do something, like show a spinner loader gif
}
});

//Somehwere in my app I also have:
$.ajaxSetup({
beforeSend: function() {
if(x===1){
$.ajax({
type: "GET",
url: my_url/fetch_something,
async:false
});
}
}
});

我在第一个 AJAX 调用中的 beforeSend 是否会超过 ajaxSetup 中的调用?有没有办法更好地解决这个问题?

更好地了解我的应用:

我通过应用程序进行了很多 Ajax 调用,每次调用都会在 header 上发送一个安全散列来验证用户,这些散列也有时间限制(散列和时间限制都保存在 localStorage 中)

我想要从 ajax 设置(及其中的条件)中检查时间限制 - 如果 time_limit < current_time 则运行 ajax 调用以刷新用户哈希。

这不是针对 1 或 2 次调用的练习,实际上我的应用程序中有 20 多个不断增长的 Ajax 调用,这些调用使用了用户散列,而且在每个调用中都进行此检查是非常不切实际的。

最佳答案

更新:

在设置“ session ”/本地存储的时间间隔上有一个方法

var refreshing = false;
var intervalID;
$(document).ready(function(e){
var delay = 1234;
intervalID = window.setInterval(setupInterval, delay);
});

function setupInterval(){
refreshing = true;
$.ajax(URL).done(function(r) { //do stuff
setupStorage(r);
refreshing = false;
});
}
function setupStorage(info){
//setup whatever here
}

旧:

您能否在就绪函数中使用一些逻辑来控制您需要做什么?

所以基本上调用一个 ajax 调用 -> 如果为 false,则只安排后一种方法,否则运行安装程序并在完成时安排后一种方法。

一些伪代码:

var refresh = false;
$(document).ready(function(e){
$.ajax(URL).done( function(r) {
if(r) {
routeOne();
} else {
latter();
}
});
});

function routeOne(){
$.ajax(URL).done(function(r) { //do stuff
latter();
});
}
function latter(){
//All other ajax calls
}

我会再考虑一下,让我先喝完咖啡...

编辑:

根据您更新的描述,您是否可以安排一个 setInterval 以在您需要的时间间隔内运行检查方法/哈希更新,服务器上的时间间隔是静态的还是可变的? Facebook 用心跳来做这件事,我在网络应用程序中使用了这种逻辑和一些“锁定”功能。如果您正确安排时间间隔,它不应中断任何其他 ajax 调用。

关于javascript - 在所有其他 AJAX 调用之前发送 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504685/

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