如何从AJAX回调中的setTimeout()中调用存储在一组选项中的函数

How to call a function that is stored in a set of options from within setTimeout() inside an AJAX callback?

本文关键字:一组 函数 选项 存储 调用 AJAX setTimeout 回调      更新时间:2023-09-26

以下是我的相关代码:

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

奇怪的是,我可以从success: []选项中调用ajax.success,但是它在setTimeout()中包装时停止工作。

我认为最有效的是在执行此代码之前将ajax.success选项分配给函数,但我不确定如何这样做。

任何帮助都是非常感激的,如果这是重复的,我很抱歉。

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

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

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

success: [
    function() {
        var self = this,
            args = arguments;
        setTimeout(function () {
            doStuff.apply(self, args);
        }, 250),
    },
    // ...
]

注意thisarguments是关键字。还要注意.apply的使用

这是你的意思吗?…

function doWork() {
console.log('test');
}
$.ajax({
    url: 'xxx',
    success: function() {
     setTimeout(function() {
        doWork();
      }, 1000);
     }
});