Javascript jquery延迟并根据服务器响应返回false
我有下面的jquery延迟逻辑Javascript jquery延迟并根据服务器响应返回false,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,我有下面的jquery延迟逻辑 var $qCallA = callA(); var $qCallB = callB(); $.when($qCallA,$qCallB).then(function () { $("#spinnerDiv").removeClass('spinner show'); }); function callA() { return $.getJSON("/callA", function (data) { if (data.
var $qCallA = callA();
var $qCallB = callB();
$.when($qCallA,$qCallB).then(function () {
$("#spinnerDiv").removeClass('spinner show');
});
function callA() {
return $.getJSON("/callA", function (data) {
if (data.status === "success") {
buildTable1(data);
}
});
}
function callB() {
return $.getJSON("/callB", function (data) {
if (data.status === "success") {
buildTable2(data);
}
});
}
我想根据来自后端json的响应为$getJSON调用返回false。
例如,如果data.status==“failure”,那么我想为getJSON返回“false”。
如何做到这一点
谢谢听起来您想使用正确的
然后
回调,在这里您可以为承诺返回一个新的结果值:
$.when(callA(), callB()).then(function(a, b) {
$("#spinnerDiv").removeClass('spinner show');
if (a && b) …
});
function callA() {
return $.getJSON("/callA").then(function(data) {
if (data.status === "success") {
buildTable1(data);
}
return data.status != "failure";
});
}
function callB() {
return $.getJSON("/callB").then(function(data) {
if (data.status === "success") {
buildTable2(data);
}
return data.status != "failure";
});
}
您应该为
$提供成功回调,然后为$.getJSON
提供
,并在
处理时为$返回自定义差异
这样,您可以根据JSON中的数据手动解析或拒绝
var $qCallA = callA();
var $qCallB = callB();
$.when($qCallA,$qCallB).then(function (s1, s2) {
$("#spinnerDiv").removeClass('spinner show');
}).fail(function() {
//handle failure
});
function callA() {
return $.getJSON("/callA").then(function (data) {
if (data.status === 'failure') {
return $.Deferred().reject("A: no success");
}
return $.Deferred().resolve(data);
});
}
function callB() {
return $.getJSON("/callB").then(function (data) {
if (data.status === 'success') {
return $.Deferred().resolve(data);
}
return $.Deferred().reject("B: no success");
});
}
无法从异步函数返回任何内容。当发生data.status==“failure”
时,您需要做什么?您不能从异步调用返回。。。。你想违背诺言吗?是的。我想违背诺言。@JavaUser赏金是怎么回事?我的回答中有什么遗漏吗?对你不起作用吗?