2014-02-26 51 views
1

我想做一個功能,支持done但沒有返回AJAX。javascript沒有AJAX調用功能

function checkAndReturn(){ 
    if(global.id){ 
     return global.id; // the problem might be here 
    }else{ 
     return $.get("http://someurl.com",null,function(){...}) 
    } 
} 

這裏checkAndReturn.done(function(){...})作品如果global.id不可用,但它不工作,如果global.id可用。

我想我應該返回任何其他對象,並將我的數據框中的對象,使我的工作,也許xhr

+0

你需要知道你希望你的方法返回什麼。在第二種情況下('$ .get'),你返回一個xhr對象。您需要在兩種情況下都返回id,或者將xhr對象緩存到變量中,然後再次返回。 – nbrooks

+0

@nbrooks他不能在第二種情況下返回id,這個調用是異步的。 – kapa

回答

3

您應該返回一個(已解決)jQuery Deferred對象。由jQuery的AJAX函數返回的jqXHR對象也源自Deferred,因此函數的「接口」將變得乾淨 - 在任何情況下,您的函數都將返回Deferred

你可以做這樣的事情(只是一個例子,它適應你的使用情況):

function checkAndReturn(){ 
    if (global.id){ 
     return $.Deferred().resolve(global.id); 
    } 
    else { 
     return $.get("http://someurl.com", null, function(){...}) 
    } 
} 

jsFiddle Demo

+0

剛剛添加一個示例:)。我會離開你的,這和我的很相似。 – kapa

+1

你應該返回idXHR – Vic

+0

使它更緊湊一點。 – kapa