0

这是我的相关代码:

success: [
             setTimeout(function () {
                    ajax.success
             }, 250),
         //...

奇怪的是我可以ajax.successsuccess: []选项中调用,但是当包裹在setTimeout().

我认为最好的方法是ajax.success在执行此代码之前将选项分配给函数,但是我不知道该怎么做。

非常感谢任何帮助,如果这是重复的,我深表歉意。我找不到类似的东西。

4

2 回答 2

2

这是你的意思吗?...

function doWork() {
console.log('test');
}

$.ajax({
    url: 'xxx',
    success: function() {
     setTimeout(function() {
        doWork();
      }, 1000);
     }
});
于 2013-05-21T17:42:19.947 回答
2

successcallback 接受一个处理程序或处理程序列表。但是,调用的结果setTimeout是与该超时关联的唯一 ID。这不是一个函数。因此,您可能想要的是:

success: [
    function() {
        setTimeout(function () {
            doStuff();
        }, 250),
    },
    // ...
]

如果你的函数需要使用一些参数,那么你可以像这样包装它:

success: [
    function() {
        var self = this,
            args = arguments;

        setTimeout(function () {
            doStuff.apply(self, args);
        }, 250),
    },
    // ...
]

请注意,thisandarguments是关键字。还要注意.apply.

于 2013-05-21T17:45:39.590 回答