2012-09-26 135 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 –