在满足条件之前不要运行功能
Do not run function until condition is met
我有 2 个值
var maxValues;
var incrementValues;
我有一个功能。
runFunction();
数值增加基于 ajax 次成功。
如何不断检查 maxValues 是否等于 incrementValues,一旦它们相等,然后运行 runFunction()
。
在 ajax 请求的 success
回调中添加 check。
这比使用间隔要好。
var check = function (maxValues, incrementValues) {
if (maxValues == incrementValues) {
runFunction();
}
};
$.get( "example.php", function(data) {
// Ajax successful
check(data.maxValues, data.incrementValues);
});
或者按照@TedHopp 的建议,使用 always
回调:
$.get( "example.php", function() {
// Ajax successful
}).always(function() {
// success or no success, just "always"
check(maxValues, incrementValues);
});
查看 jQuery API Docs 了解更多信息。
如果您不想将它添加到每个 ajax 请求,您可以构建一个自定义 Ajax 隐式调用您的检查的函数,请参阅此答案以获得帮助:jQuery AJAX custom function and custom callback? .
如果您正在寻找一种简单、开箱即用的解决方案,可以节省几行代码,我有一个专门用于此目的的小型库(运行 所有给定条件都满足时的回调在这里遇到):https://github.com/Zodiase/setrace.
我知道接受的答案已经解释了应该做什么。但是为什么每次都写 check 可以使用超轻量级库提供的单行代码呢?
方法如下:
// Define the list of names for the conditions.
var conditions = [
'downloaded_a',
'downloaded_b',
'timeout'
];
// Define what needs to run when all conditions are met.
var runAtTheEnd = () => {
alert('All conditions met!');
};
// Create the race.
var race = SETRACE(conditions, runAtTheEnd);
$.get('http://i.imgur.com/y8bqp8t.png', race.set['downloaded_a']);
$.get('http://i.imgur.com/bDp49NE.png', race.set['downloaded_b']);
window.setTimeout(race.set['timeout'], 3000);
// Now when all three conditions are met, `runAtTheEnd` will be called.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/Zodiase/setrace/v1.0.1/setrace.js"></script>
我有 2 个值
var maxValues;
var incrementValues;
我有一个功能。
runFunction();
数值增加基于 ajax 次成功。
如何不断检查 maxValues 是否等于 incrementValues,一旦它们相等,然后运行 runFunction()
。
在 ajax 请求的 success
回调中添加 check。
这比使用间隔要好。
var check = function (maxValues, incrementValues) {
if (maxValues == incrementValues) {
runFunction();
}
};
$.get( "example.php", function(data) {
// Ajax successful
check(data.maxValues, data.incrementValues);
});
或者按照@TedHopp 的建议,使用 always
回调:
$.get( "example.php", function() {
// Ajax successful
}).always(function() {
// success or no success, just "always"
check(maxValues, incrementValues);
});
查看 jQuery API Docs 了解更多信息。
如果您不想将它添加到每个 ajax 请求,您可以构建一个自定义 Ajax 隐式调用您的检查的函数,请参阅此答案以获得帮助:jQuery AJAX custom function and custom callback? .
如果您正在寻找一种简单、开箱即用的解决方案,可以节省几行代码,我有一个专门用于此目的的小型库(运行 所有给定条件都满足时的回调在这里遇到):https://github.com/Zodiase/setrace.
我知道接受的答案已经解释了应该做什么。但是为什么每次都写 check 可以使用超轻量级库提供的单行代码呢?
方法如下:
// Define the list of names for the conditions.
var conditions = [
'downloaded_a',
'downloaded_b',
'timeout'
];
// Define what needs to run when all conditions are met.
var runAtTheEnd = () => {
alert('All conditions met!');
};
// Create the race.
var race = SETRACE(conditions, runAtTheEnd);
$.get('http://i.imgur.com/y8bqp8t.png', race.set['downloaded_a']);
$.get('http://i.imgur.com/bDp49NE.png', race.set['downloaded_b']);
window.setTimeout(race.set['timeout'], 3000);
// Now when all three conditions are met, `runAtTheEnd` will be called.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/Zodiase/setrace/v1.0.1/setrace.js"></script>