有没有办法监听javascript函数退出?功能完成后可以设置的触发器吗?

我正在尝试使用用户界面混淆技术(BlockUI),而AJAX对象正在从数据库中检索数据,但该函数不一定最后执行,即使您将其放在函数调用的末尾。

示例:

function doStuff() {
  blockUI();
  ajaxCall();
  unblockUI();
};

在解雇unBlockUI之前,是否有办法让doStuff监听ajaxCall完成?实际上,它线性处理函数,按顺序调用每个对象,然后生成一个单独的线程来完成每个对象。因此,尽管我的AJAX调用可能需要10-15秒才能完成,但由于函数的线性执行,我只是在一瞬间阻止用户。

这种方法不太优雅......只有当AJAX函数设置的返回值设置为true或者具有某种性质时,才会结束循环。但这似乎不必要地复杂和低效。

有帮助吗?

解决方案

但是,您正在完成Ajax例程,您需要的是“回调”。一旦完成就会运行的功能:

function ajaxCall(callback){
    //do ajax stuff...
    callback();
}

然后:

function doStuff(){
    blockUI();
    ajaxCall(unblockUI);
}

其他提示

您的AJAX调用应指定回调函数。您可以在回调中调用unblockUI。

SAJAX 是一个简单的AJAX库,它对如何进行AJAX调用提供了更多帮助。

还有另一篇文章描述了您正在寻找的内容。

你可以做同步xhr。这将导致整个UI块在调用期间(无论可能需要多长时间)。

您需要重新设计程序流以与asynchronus流兼容,例如指定在处理响应后要调用的回调函数。看看Prototype或JQuery或者......如何实现这一目标。

答案很简单,当你的ajax请求返回结果时你必须调用unblockUI(),使用jQuery你可以这样做:

function doStuff(){

    blockUI();

    jQuery.ajax({
        url: "example.com",
        type: "POST",           //you can use GET or POST
        success: function(){

            unblockUI();
        }
    });
}

在我看来,您希望用户在从数据库中获取信息时等待。当我从数据库中发出一些Ajax调用信息时,我所做的就是显示一个动画gif,上面写着“得到它......”。 - 它不断闪烁,直到检索到信息并显示在网页中。显示信息时,动画gif将关闭/隐藏,焦点将移至显示的新信息。动画gif让用户知道发生了什么事。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top