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

标签 javascript jquery ajax

这是我的相关代码:

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 的使用。

关于javascript - 如何从 AJAX 回调内的 setTimeout() 调用存储在一组选项中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676190/

相关文章:

javascript - 如何拦截 jquery 数据表搜索函数以在搜索前重新加载数据(函数名称是什么)

javascript - 如何使用原型(prototype)方法更改类中的值?

javascript - 删除 ng-repeat 而不会泄漏

java - 使用 JSF 和 PrimeFaces 进行自适应轮询

javascript - jQuery 数据表 - ASP.NET Controller 参数始终为 null

php - JavaScript + PHP + 动态文本字段 + Jquery

ajax - #! (hashbang)和谷歌搜索引擎优化

javascript - 获取个人帖子id

javascript - 在 JavaScript 中,在函数作用域之外访问未声明的变量赋值?

javascript - 用 iFrame 替换所有对象标签 - 第一次替换后停止 - Javascript