Javascript 在jQuery中,如何等待变量的特定值
我有一个变量Javascript 在jQuery中,如何等待变量的特定值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个变量 var IsAjaxing; 每次在页面上触发ajax时,我都将其设置为true。然后在ajax完成时将其设置为false 我正在构建一个SafeAjaxing事件,因此只有当页面未ajaxing时才能完成工作: // safe-ajaxing: Triggers when no ajax is running $($fieldRenderPageDOM).on("safe-ajaxing", '.field-render', function(e, work)
var IsAjaxing;
每次在页面上触发ajax时,我都将其设置为true。然后在ajax完成时将其设置为false
我正在构建一个SafeAjaxing事件,因此只有当页面未ajaxing时才能完成工作:
// safe-ajaxing: Triggers when no ajax is running
$($fieldRenderPageDOM).on("safe-ajaxing", '.field-render', function(e, work) {
$.when({ IsAjaxing: false }).done(work);
});
这似乎不是等待,工作总是立即调用
可以这样称呼:
$fieldDOM.trigger("safe-ajaxing", function () {
$fieldDOM.trigger("do-work");
$fieldDOM.trigger("do-some-more-work);
});
这可能不是最好的方法,但它是有效的 您确实应该优化我编写的代码,但这是为了让您开始 此脚本检查变量是否每10毫秒更改一次
注意:clearInterval()函数用于停止检查。为此,您应该使用承诺:
var IsAjaxing = function(){
var defer = $.Deferred().resolve();
return {
On: function(){
defer = $.Deferred();
},
Off: function(){
defer.resolve();
},
Promise: function() {
return defer.promise();
},
IsOn: function() {
return defer.state() == "pending";
},
IsOff: function() {
return defer.state() != "pending";
}
};
}();
然后你的活动将是:
// safe-ajaxing: Triggers when no ajax is running
$($fieldRenderPageDOM).on("safe-ajaxing", '.field-render', function(e, work) {
$.when(IsAjaxing.Promise()).done(work);
});
每次启动ajax请求运行时:
IsAjaxing.On();
每次完成ajax运行时:
IsAjaxing.Off();
要检查IsAjaxing的当前状态,请调用IsOn和IsOff函数
我正在构建一个SafeAjaxing事件,因此工作只能在页面未ajaxing时完成
不要自己建造这个。只需使用内置的,即
“如果启动了一个Ajax请求而当前没有运行其他Ajax请求,则会触发此事件。”ajaxStart
“如果不再处理Ajax请求,将触发此全局事件。”ajaxStop
IsAjaxing.Off();