我的代码:
function validateAddress(type){
var status = true
if(type == 0 || type == 2){
$.get( "/user/status/0", function( data ) {
if(!data.status){
status = false
}
else
status = true
});
}
else{
$.get( "/status/1", function( data ) {
if(!data.status){
status = false;
}
else{
status = true
}
});
}
console.log(status)
return status
}
如何确保从功能返回内部状态?目前它一直返回true,因为某种程度上状态值没有改变。 AJAX部分本身工作正常。
答案 0 :(得分:0)
您需要考虑到AJAX是异步的事实 - 您的$ .get调用不会阻塞,它们只是排队事件并且当前通过您的方法继续执行,因此它最终会返回您指定的初始值状态,真实,每一次。
你可以让你的函数返回一个jQuery的延迟实例来解决这个问题:
function validateAddress(type){
var promise = $.Deferred();
var status = true;
if(type == 0 || type == 2){
$.get( "/user/status/0", function( data ) {
if(!data.status){
status = false;
}
else
status = true;
// This is the important bit
promise.resolve(status);
});
}
else{
$.get( "/status/1", function( data ) {
if(!data.status){
status = false;
}
else{
status = true;
}
// This is the important bit
promise.resolve(status);
});
}
return promise;
}
然后,当使用该函数的返回值时:
validateAddress(someTypeVarPassedInHere)
.done(function (status) {
console.log(status);
});