我有一个JavaScript函数,没有按顺序触发。它先触发 if (totalYear > 0) {
方法,然后触发CheckForAddRecordsToAddFromDSS
语句,甚至触发if (check1 || check2)
方法。
为什么会这样?
CheckForMissingRecordsFromSupp
答案 0 :(得分:5)
为什么会这样?
.done
希望传递一个函数。您正在传递$.getJSON
的返回值,它不是一个函数。
考虑以下示例:
foo(bar())
即使不了解foo
或bar
,我们也肯定知道bar
是在之前 foo
和bar
之前执行的的返回值传递到foo
。
您的代码应为:
$.getJSON("/Home/CheckForMissingRecordsFromSupp", function(data) {
check1 = data;
}).done(function() { // <- function
$.getJSON("/Home/CheckForAddRecordsToAddFromDSS", function(data) {
check2 = data;
}).done(function() {
if (check1 || check2) {
location.reload();
}
});
});
话虽如此,由于.done
也收到网络响应,因此您无需将回调传递给$.getJSON
。您可以只写:
$.getJSON("/Home/CheckForMissingRecordsFromSupp").done(function(check1) {
$.getJSON("/Home/CheckForAddRecordsToAddFromDSS").done(function(check2) {
if (check1 || check2) {
location.reload();
}
});
});