我有两个功能
function1()
{
//...
}
在function1
中我发出ajax请求并加载图片
还有另一个功能 - function2
我在其中调用function1
来加载图片。
现在,问题是什么。
如何在我function1
再次呼叫之前停止function2
的传播?
function2()
{
// ...
// how stop old propogation of function1 here?
function1(); //call function1 again
}
由于
答案 0 :(得分:0)
嗯,我真的没有得到你想要做的事,但仍然......
如果您尝试取消AJAX请求,我认为没有一个简单的解决方案。最好发起另一个反转/停止变更的请求。
但是当你问“如何停止功能?”时,我的回答是为什么在不需要它的地方发起它。在需要时调用它。
如果你真的想发起它&在特定事件上运行,在函数内设置一个if块。或者更确切地说,在您的情况下,在功能1和从功能2改变它。
答案 1 :(得分:0)
使用可在更广范围内操作的标志。像:
flag = false;
function function2(){
if(flag) function1();
}
现在你可以打电话了
function2(); // and function1 will not be called
或设置:
flag = true;
function2(); //now function1() will be called.
答案 2 :(得分:0)
不是立即加载图像func1()
,而是可以插入一点延迟;这样,您可以在每次调用函数时取消先前的下载并安排新的下载。这是一个例子:
var delay = 3500, // Delay for 3.5 seconds
timeoutId;
function func1(url) {
if (timeoutId) clearTimeout(timeoutId);
setTimeout(function() {
// Add code to download image here
}, delay);
}
function func2() {
// As long as you call func1 again before the timeout elapses, the
// previous download should be cancelled, leaving you with the last
// selected image
}