我想返回x ||和$ .get。
或者换句话说,如果x为真,则返回x,否则执行GET调用并返回服务器提供的值。
我的尝试列在下面(理想情况下,它会跟随返回x || y格式,可能使用匿名函数?而不是if / then)。
问题是我从$ .get函数返回的内容似乎不是我的预期。
希望了解正在发生的事情。
由于
$(function(){
function test(x,y) {
if(x==true) {return true;}
else{
//test.php is echo($_GET['y']==123);
$.get('ajax.php',{'y':y},function (status) {return status;});
}
}
alert(test(false,123));
});
答案 0 :(得分:2)
如果你使用的是jQuery 1.5或更高版本,那么Deferred和Promise就是你的朋友。每当你调用AJAX调用时,你得到的是Promise对象,你可以通过.done(),. fail()和.then()附加函数。
然而!正如这个优秀的延迟/承诺介绍和所有这些东西(http://www.erichynds.com/jquery/using-deferreds-in-jquery/)所指出的,你也可以使用$ .wait()处理一个不是自动进行缓存的承诺的值。所以这样的代码:
$.when(getToken()).done(
function (token) {
// do something with the token, which may or may not have been
// retrieved from the remote service
}
);
可以处理缓存值或承诺没有问题:
function getToken() {
// Return either the cached value or a jQuery Promise. If $.when() gets the
// cached value it will immediately realize that you didn't give it a
// promise and it will instead create a jQuery Deferred to return and
// .resolve() it using the value it did get. Thus, either way what
// comes out of the function is something .when() can deal with and call a function.
if (this.cache["token"]) {
return this.cache["token"];
} else {
return $.get(" ... some url ... ");
}
};