2012-09-26 133 views
0

我有一個調用異步函數的函數。我的例子使用ajax,但它確實是異步的。試圖確定如何監視或追加異步函數的成功調用

我想在ajax調用的成功中添加額外的信息。

的所發生的順序:

- 我的函數被調用,設置了一個param是一個$就調用。

- 我的函數需要1行的代碼添加到$ .ajax.success呼叫

我的代碼是類似如下:

function myFunct(settings, callback){ 
    if(!callback)return; 
    var x = 100; 
    //here is where i have issues, as i want 
    //to be able to adjust the success function 
    // to also have 1 line of code, a decrementer. 
    //I want to do something like settings.success = "x--;" + settings.success; 

    callback(settings); 

    //I also wasnt sure if you could wrap 'callback' 
    //with a success function when the inner success function executes 
} 

調用示例:

var settings = "";//settings of the ajax call. 
myFunct(settings, function(x){ $.ajax(x);}); 

回答

3

如果確保回調總是返回承諾對象,則可以使用.done()

function myFunct(settings, callback) { 
    if (!callback) return; 
    var x = 100; 

    callback(settings).done(function(){ 
     x--; 
    }); 
} 
var settings = { url: "foobar.php" }; 
myFunct(settings, function(x) { 
    return $.ajax(x); 
}) 

可以肯定的是,var x = 100只是一個例子嗎?就目前而言,它會超出範圍,毫無意義。

+0

是的,var x只是樣本數據 – Fallenreaper

+0

作爲一個側面的問題:設置是在這種情況下的AJAX參數數組...我如何去設置包含諸如「成功:功能(){」的東西。 ..}「,因爲就目前而言,這似乎可能會引發錯誤。我只是JSON.stringift這一切? – Fallenreaper

+0

我不明白你在問什麼,你能舉個例子嗎? http://jsfiddle.net –