Javascript 如何计算请求所需的时间?
这就是我要做的: 1.用户单击其中一个选中图标。2.那个图标开始闪烁。3.一段时间后(请求时间)闪烁停止。4.然后检查className添加 这是我的代码,它也可以工作:Javascript 如何计算请求所需的时间?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,这就是我要做的: 1.用户单击其中一个选中图标。2.那个图标开始闪烁。3.一段时间后(请求时间)闪烁停止。4.然后检查className添加 这是我的代码,它也可以工作: 功能睡眠(时间){ 返回新承诺((resolve)=>setTimeout(resolve,time)); } 功能闪烁(时间){ $(this).fadeToggle(时间,函数(){ 如果(++n{ $('.fa check').not(this.removeClass('checked'); $(this.toggle
功能睡眠(时间){
返回新承诺((resolve)=>setTimeout(resolve,time));
}
功能闪烁(时间){
$(this).fadeToggle(时间,函数(){
如果(++n{
$('.fa check').not(this.removeClass('checked');
$(this.toggleClass('checked');
});
});代码>
.fa检查{
颜色:#aaa;
光标:指针;
}
.fa-check.checked{
颜色:#44b449;
}
答复1
答复2
答复3
所以,从评论判断,你真正需要的是一个更好的眼罩。看看这个:
var Blinker = function(el, time) {
this.el = el;
this.time = time;
this.running = false;
this._fader = this._fade.bind(this);
};
Blinker.prototype = {
_fade: function() {
if (!this.running) {
return;
}
this.el.fadeToggle(this.time, this._fader);
},
start: function() {
this.running = true;
this._fader();
},
stop: function() {
this.running = false;
}
};
使用方法:
$("body").on('click', '.fa-check', function(e) {
var blinker = new Blinker($(this), 100);
blinker.start();
$.ajax({
// some other code
complete: function() {
blinker.stop();
}
});
});
所以,从评论来看,你真正需要的是一个更好的眼罩。看看这个:
var Blinker = function(el, time) {
this.el = el;
this.time = time;
this.running = false;
this._fader = this._fade.bind(this);
};
Blinker.prototype = {
_fade: function() {
if (!this.running) {
return;
}
this.el.fadeToggle(this.time, this._fader);
},
start: function() {
this.running = true;
this._fader();
},
stop: function() {
this.running = false;
}
};
使用方法:
$("body").on('click', '.fa-check', function(e) {
var blinker = new Blinker($(this), 100);
blinker.start();
$.ajax({
// some other code
complete: function() {
blinker.stop();
}
});
});
如果我没有弄错你的问题,你就无法预测与远程服务器通话所需的时间。我的答案是,你不能(除非你在一个非常特殊的环境中,但答案是,你不应该)
没有办法知道一个请求需要多长时间。这是因为互联网的本质、不同的路由、服务器不同方面的不同负载等等
实际上,您不想做的是在服务器响应时使用回调来执行某些操作。此回调可用于停止闪烁图标
这完全可以在$.ajax的成功回调中实现
尝试对异步数据使用回调或承诺。轮询更新可能被视为一种反模式。如果我正确理解了您的问题,您就不需要预测与远程服务器通信所需的时间。我的答案是,你不能(除非你在一个非常特殊的环境中,但答案是,你不应该)
没有办法知道一个请求需要多长时间。这是因为互联网的本质、不同的路由、服务器不同方面的不同负载等等
实际上,您不想做的是在服务器响应时使用回调来执行某些操作。此回调可用于停止闪烁图标
这完全可以在$.ajax的成功回调中实现
尝试对异步数据使用回调或承诺。轮询更新可能被认为是一种反模式。我不理解这个问题。显然,您无法计算请求所需的时间。你不知道未来。你可以预测一下,但我不明白你为什么要从这个开始?@freakish这就是我要做的:1.用户点击其中一个选中的图标。2.那个图标开始闪烁。3.一段时间后(请求时间)闪烁停止。4.然后选中className adds。在成功(或完成)处理程序中执行步骤3和4。有什么问题吗?@当我无法停止闪烁时,会有点奇怪……问题在于你的闪烁功能。它不允许停止(一旦调用,它就会泄漏内存)。另外,它失败是因为淡入淡出切换处理程序中的此
与$(此)
不同。您必须将其重写为其他对象,即支持blinker.start()
和blinker.stop()
的对象,然后您将在请求之前和之后分别调用它们。我不理解这个问题。显然,您无法计算请求所需的时间。你不知道未来。你可以预测一下,但我不明白你为什么要从这个开始?@freakish这就是我要做的:1.用户点击其中一个选中的图标。2.那个图标开始闪烁。3.一段时间后(请求时间)闪烁停止。4.然后选中className adds。在成功(或完成)处理程序中执行步骤3和4。有什么问题吗?@当我无法停止闪烁时,会有点奇怪……问题在于你的闪烁功能。它不允许停止(一旦调用,它就会泄漏内存)。另外,它失败是因为淡入淡出切换处理程序中的此
与$(此)
不同。您必须将其重写为其他对象,即支持blinker.start()
和blinker.stop()
的对象,然后在请求之前和之后分别调用它们。只有两个问题:1。为什么要将time
参数传递给该函数?那是什么时候?我指的是这个新的眨眼器($(这个),100)中的100
代码>?2.淡入淡出:
开头的下划线是什么?时间是淡入淡出所需的时间(例如闪烁频率)。下划线
只是“私有”函数的命名约定。只是为了表明你不应该直接使用\u fade
。我明白了。。你能告诉我你为什么要定义一个对象来做这个吗?我想你可以定义一个简单的函数。。我说的对吗?不对,因为你必须至少运行变量,它(逻辑上)是一个闪烁状态。您可以通过运行global变量来实现这一点,但这太可怕了,可能会导致棘手的问题。只有两个问题:1。为什么要将time
参数传递给该函数?那是什么时候?我指的是这个新的眨眼器($(这个),100)中的100
代码>?2.淡入淡出:
开头的下划线是什么?时间是淡入淡出所需的时间(例如闪烁频率)。下划线。