标签: callback

在继续之前等待多个异步调用完成

所以,我有一个加载的页面,并通过jquery.get发出几个请求,用它们的值填充下拉列表.

$(function() {
    LoadCategories($('#Category'));
    LoadPositions($('#Position'));
    LoadDepartments($('#Department'));

    LoadContact();
};
Run Code Online (Sandbox Code Playgroud)

然后调用LoadContact(); 这是另一个调用,当它返回时,它会填充表单上的所有字段.问题是通常,下拉列表并非全部填充,因此,它无法将它们设置为正确的值.

我需要做的是,只要其他方法完成并且回调完成执行,LoadContact就会以某种方式执行.

但是,我不想在下拉填充回调的末尾放置一堆标志,然后检查,并且在调用LoadContact()之前必须进行递归的setTimeout调用检查;

jQuery中有什么东西可以让我说,"当所有这些都完成时执行它."?

更多信息 我正在考虑这些问题

$().executeAfter(
    function () {   // When these are done
        LoadCategories($('#Category'));
        LoadPositions($('#Position'));
        LoadDepartments($('#Department'));
    },
    LoadContact // Do this
);
Run Code Online (Sandbox Code Playgroud)

...它需要跟踪在执行方法期间发生的ajax调用,并且当它们全部完成时,调用LoadContact;

如果我知道如何拦截在该函数中创建的ajax,我可能会编写一个jQuery扩展来执行此操作.

我的解决方案

;(function($) {
    $.fn.executeAfter = function(methods, callback) {

        var stack = [];

        var trackAjaxSend = function(event, XMLHttpRequest, ajaxOptions) {
            var url = ajaxOptions.url;

            stack.push(url);
        }

        var trackAjaxComplete = function(event, XMLHttpRequest, ajaxOptions) {
            var url = ajaxOptions.url;

            var index = jQuery.inArray(url, stack);

            if (index >= 0) …
Run Code Online (Sandbox Code Playgroud)

javascript jquery asynchronous callback

55
推荐指数
3
解决办法
4万
查看次数

Facebook"喜欢"按钮回调

我有兴趣实现Facebook"喜欢"按钮,但我想知道用户点击此按钮是什么,所以我可以从中获得一些有用的信息.从我读过的内容来看,Facebook正在让我们陷入黑暗中,谁在点击什么.有人知道如何跟踪哪个用户点击特定产品的类似按钮?

更新:类似按钮由facebook通过iFrame或xFBML呈现.这就是为什么很难跟踪谁点击什么,或嵌入onclick事件等.

javascript facebook callback button facebook-like

55
推荐指数
3
解决办法
7万
查看次数

Android BroadcastReceiver还是简单的回调方法?

在我的项目中,我使用BroadcastReceivers作为来自长时间运行线程的回调(例如,通知活动下载已完成并从Worker发送一些响应数据,Thread以便活动可以向用户显示相应的消息......).要使用BroadcastReceivers,我每次使用时都必须小心注册和取消注册广播接收器,并且当我使用此方法进行更多不同的操作(例如下载,进行WebService调用等)时,还必须特别注意要发送的消息. ..).而且,通过广播的意图发送自定义对象我还需要制作对象Parcelable.

与这种方法不同,我还看到了回调方法方法,它看起来比我使用的方法更简单.回调方法是简单的接口方法实现,可用于实现与应用程序消息传递中的BroadcastRecaiver相同的效果.这种方法不需要Parcelable实现来返回复杂的对象而且它不使用类似的键BroadcastReceiver.我认为不好的部分是我需要在调用回调方法之前检查回调对象的null值.还要确保我从UI线程上的实现运行代码,这样我就可以更新UI而不会出错.

好的,我希望你明白我的意思:).

现在问题是你认为回调方法比BroadcastReceiver单个应用程序内部使用的方法更好(更轻,更干净,更快......)?(请注意,我没有使用Android Service进行后台工作..只是AsyncTaskThreads)

谢谢!

multithreading android callback broadcastreceiver

54
推荐指数
2
解决办法
1万
查看次数

如何在PHP中动态调用类方法?

如何在PHP中动态调用类方法?类方法不是静态的.看起来

call_user_func(...)
Run Code Online (Sandbox Code Playgroud)

仅适用于静态功能?

谢谢.

php callback

53
推荐指数
4
解决办法
6万
查看次数

在Python中使用自定义比较函数对列表进行排序

我知道有几个问题就像这样,但我似乎无法得到他们的工作答案.

我有一个列表列表,50次5个元素.现在我想通过对每个元素应用自定义比较函数来对此列表进行排序.此函数计算列表的适合度,元素应按顺序排序.我创建了两个函数,比较和健身:

def compare(item1, item2):
    return (fitness(item1) < fitness(item2))
Run Code Online (Sandbox Code Playgroud)

def fitness(item):
    return item[0]+item[1]+item[2]+item[3]+item[4]
Run Code Online (Sandbox Code Playgroud)

然后我试着通过以下方式打电话给他

sorted(mylist, cmp=compare)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, key=fitness)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, cmp=compare, key=fitness)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, cmp=lambda x,y: compare(x,y))
Run Code Online (Sandbox Code Playgroud)

我也尝试使用相同的参数list.sort().但无论如何,函数不会将列表作为参数而是一个参数None.我不知道为什么会这样,主要来自C++,这与我的回调函数的任何想法相矛盾.如何使用自定义函数对此列表进行排序?

编辑 我发现了我的错误.在创建原始列表的链中,除了使用返回值之外,一个函数没有返回任何内容.抱歉打扰了

python sorting list callback

53
推荐指数
6
解决办法
9万
查看次数

Python子进程:cmd退出时的回调

我正在推出一个使用的程序 subprocess.Popen(cmd, shell=TRUE)

我对Python很新,但感觉就像应该有一些api让我做类似的事情:

subprocess.Popen(cmd, shell=TRUE,  postexec_fn=function_to_call_on_exit)
Run Code Online (Sandbox Code Playgroud)

我这样做是为了function_to_call_on_exit能够在知道cmd退出的基础上做一些事情(例如保持当前正在运行的外部进程数的计数)

我假设我可以相当简单地将子进程包装在一个将线程与Popen.wait()方法结合起来的类中,但是因为我还没有在Python中进行线程化,而且看起来这可能是一个常见的API存在,我想我会先尝试找一个.

提前致谢 :)

python subprocess callback exit

52
推荐指数
4
解决办法
2万
查看次数

一个非常简单的多线程并行URL提取(没有队列)

我花了一整天的时间在Python中寻找最简单的多线程URL提取器,但我发现的大多数脚本都使用队列或多处理或复杂的库.

最后我自己写了一个,我作为答案报告.请随时提出任何改进建议.

我想其他人可能一直在寻找类似的东西.

python multithreading callback urlfetch python-multithreading

49
推荐指数
3
解决办法
4万
查看次数

代表和回调是相同还是相似?

代表与回调是一回事吗?或者他们是以某种方式相关的?

.net delegates callback

48
推荐指数
4
解决办法
2万
查看次数

如何编写一个接受回调作为参数的jquery函数

我有以下功能.

function ChangeDasPanel(controllerPath, postParams) {

    $.post(controllerPath, postParams, function(returnValue) {

        $('#DasSpace').hide("slide", { direction: "right" }, 1000, function() {

            $('#DasSpace').contents().remove();

            $('#DasSpace').append(returnValue).css("display", "block");

            $('#DasSpace').show("slide", { direction: "right" }, 1000);

        });

    });

};
Run Code Online (Sandbox Code Playgroud)

但我希望能够像这样称呼它

ChangeDasPanel("../Home/Test", {} ,function (){
  //do some stuff on callback
}
Run Code Online (Sandbox Code Playgroud)

如何在我的函数中实现对回调的支持?

javascript jquery function callback

48
推荐指数
4
解决办法
9万
查看次数

如果用户拒绝在firefox中共享地理位置,则函数失败从未被调用

所以我有这个javascript代码.在safari和chrome中,如果用户拒绝共享位置,它将失败,因为它应该; 但是,在Firefox中,它没有.

任何帮助赞赏.

function initGeolocation()
{
    if( navigator.geolocation )
    {          
          // Call getCurrentPosition with success and failure callbacks
          navigator.geolocation.getCurrentPosition( success, fail );
    }
    else
    {
          alert("Sorry, your browser does not support geolocation services.");
    }
}

 var map;
 function success(position)
 {

     var longIDText = document.getElementById('longID');
     var latIDText = document.getElementById('latID');
     longIDText.value = position.coords.longitude;
     latIDText.value = position.coords.latitude;
     document.getElementById('coordSubmitID').click();
  }

  function fail(error)
  {
          alert("FAAAAAAAAAAIIIIIIIIIL")
          var zip_code ;
          while (true){
              // Could not obtain location

              zip_code = prompt("Please enter your current address or zip code",""); …
Run Code Online (Sandbox Code Playgroud)

javascript firefox callback geolocation

47
推荐指数
3
解决办法
2万
查看次数