我有2个值
var maxValues;
var incrementValues;
我有一个功能。
runFunction();
值基于ajax成功而增加。
如何继续检查maxValues是否等于incrementValues,一旦它们相等,那么运行runFunction()
。
答案 0 :(得分:6)
在您的ajax请求的success
回调中添加检查。
这比使用间隔更好。
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?。< / p>
答案 1 :(得分:0)
如果您正在寻找一个简单,开箱即用的解决方案,可以节省几行代码,我有一个专门用于此目的的小型库(在满足所有给定条件时运行回调):{{ 3}}
我知道接受的答案已经解释了应该做些什么。但是,每当你可以使用超轻量级库提供的单行时,为什么要写检查?
以下是:
// 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.
&#13;
<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>
&#13;