标签: callback

更好地理解JavaScript中的回调函数

我理解将一个函数传递给另一个函数作为回调并让它执行,但我不理解这样做的最佳实现.我正在寻找一个非常基本的例子,像这样:

var myCallBackExample = {
    myFirstFunction : function( param1, param2, callback ) {
        // Do something with param1 and param2.
        if ( arguments.length == 3 ) {
            // Execute callback function.
            // What is the "best" way to do this?
        }
    },
    mySecondFunction : function() {
        myFirstFunction( false, true, function() {
            // When this anonymous function is called, execute it.
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

在myFirstFunction中,如果我确实返回了新的callback(),那么它可以工作并执行匿名函数,但这对我来说似乎不是正确的方法.

javascript function callback

163
推荐指数
5
解决办法
21万
查看次数

从DialogFragment回调片段

问题:如何创建从DialogFragment到另一个Fragment的回调.就我而言,涉及的活动应该完全不知道DialogFragment.

考虑一下我

public class MyFragment extends Fragment implements OnClickListener
Run Code Online (Sandbox Code Playgroud)

然后在某些时候我做到

DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
Run Code Online (Sandbox Code Playgroud)

MyDialogFragment的样子

protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
    DialogFragment fragment = new DialogFragment();
    fragment.listener = listener;
    return fragment;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果DialogFragment在其生命周期中暂停和恢复,则无法保证听众会出现.片段中唯一的保证是通过setArguments和getArguments通过Bundle传递的.

如果它应该是监听器,有一种方法可以引用该活动:

public Dialog onCreateDialog(Bundle bundle) {
    OnClickListener listener = (OnClickListener) getActivity();
    ....
    return new AlertDialog.Builder(getActivity())
        ........
        .setAdapter(adapter, listener)
        .create();
}
Run Code Online (Sandbox Code Playgroud)

但我不希望活动监听事件,我需要一个片段.实际上,它可以是任何实现OnClickListener的Java对象.

考虑通过DialogFragment呈现AlertDialog的Fragment的具体示例.它有Yes/No按钮.如何将这些按钮发送回创建它的Fragment?

android callback android-fragments android-dialogfragment

154
推荐指数
10
解决办法
13万
查看次数

如何在Android中定义回调?

在最近的Google IO期间,有一个关于实现restful客户端应用程序的演示文稿.不幸的是,这只是一个高级别的讨论,没有实现的源代码.

在此图中,在返回路径上有各种不同的回调到其他方法.

谷歌io演示幻灯片

我如何声明这些方法是什么?

我理解回调的想法 - 在某个事件发生后调用的一段代码,但我不知道如何实现它.到目前为止,我实现回调的唯一方法是覆盖各种方法(例如onActivityResult).

我觉得自己对设计模式有了基本的了解,但是我一直在探索如何处理返回路径.

android callback

150
推荐指数
6
解决办法
23万
查看次数

定义TypeScript回调类型

我在TypeScript中有以下类:

class CallbackTest
{
    public myCallback;

    public doWork(): void
    {
        //doing some work...
        this.myCallback(); //calling callback
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的类:

var test = new CallbackTest();
test.myCallback = () => alert("done");
test.doWork();
Run Code Online (Sandbox Code Playgroud)

代码有效,因此它会按预期显示消息框.

我的问题是:我可以为我的课程领域提供任何类型的课程myCallback吗?现在,公共字段myCallback的类型any如上所示.如何定义回调的方法签名?或者我可以将类型设置为某种回调类型?或者我可以做些什么吗?我必须使用any(隐式/显式)吗?

我试过这样的东西,但它不起作用(编译时错误):

public myCallback: ();
// or:
public myCallback: function;
Run Code Online (Sandbox Code Playgroud)

我在网上找不到任何解释,所以我希望你能帮助我.

types callback typescript

146
推荐指数
7
解决办法
16万
查看次数

C中的"回调"是什么?它们是如何实现的?

从我所做的阅读中,Core Audio在很大程度上依赖于回调(和C++,但这是另一个故事).

我理解设置一个函数的概念(类型),该函数由另一个函数重复调用以完成任务.我只是不明白他们是如何设置以及他们如何工作的.任何例子将不胜感激.

c callback

145
推荐指数
5
解决办法
27万
查看次数

Java执行程序:如何在任务完成时通知而不阻塞?

假设我有一个完整的任务队列,我需要提交给执行程序服务.我希望他们一次处理一个.我能想到的最简单的方法是:

  1. 从队列中获取任务
  2. 将其提交给遗嘱执行人
  3. 在返回的Future上调用.get并阻塞,直到结果可用
  4. 从队列中取出另一项任务......

但是,我试图完全避免阻塞.如果我有10,000个这样的队列,需要一次处理一个任务,我将耗尽堆栈空间,因为它们中的大多数将保持被阻塞的线程.

我想要的是提交一个任务并提供一个在任务完成时调用的回调.我将使用该回叫通知作为发送下一个任务的标志.(functionaljava和jetlang显然使用了这种非阻塞算法,但我无法理解他们的代码)

如何使用JDK的java.util.concurrent,而不是编写自己的执行器服务?

(向我提供这些任务的队列本身可以阻止,但这是一个需要解决的问题)

java callback notify executor

139
推荐指数
7
解决办法
12万
查看次数

确定Rails after_save回调中哪些属性发生了变化?

我正在我的模型观察器中设置一个after_save回调,只有当模型的已发布属性从false更改为true 时才发送通知.既然方法改变了?只有在保存模型之前才有用,我目前(并且未成功)尝试这样做的方式如下:

def before_save(blog)
  @og_published = blog.published?
end

def after_save(blog)
  if @og_published == false and blog.published? == true
    Notification.send(...)
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有人对处理这个问题的最佳方法有任何建议,最好使用模型观察者回调(以免污染我的控制器代码)?

model ruby-on-rails callback observer-pattern ruby-on-rails-4

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

我应该如何调用3个函数来一个接一个地执行它们?

如果我需要一个接一个地调用这个函数,

$('#art1').animate({'width':'1000px'},1000);        
$('#art2').animate({'width':'1000px'},1000);        
$('#art3').animate({'width':'1000px'},1000);        
Run Code Online (Sandbox Code Playgroud)

我知道在jQuery中我可以做类似的事情:

$('#art1').animate({'width':'1000px'},1000,'linear',function(){
    $('#art2').animate({'width':'1000px'},1000,'linear',function(){
        $('#art3').animate({'width':'1000px'},1000);        
    });        
});        
Run Code Online (Sandbox Code Playgroud)

但是,我们假设我没有使用jQuery而且我想调用:

some_3secs_function(some_value);        
some_5secs_function(some_value);        
some_8secs_function(some_value);        
Run Code Online (Sandbox Code Playgroud)

我应该如何调用这个函数来执行some_3secs_function,然后在该调用结束后,然后执行some_5secs_function并在该调用结束后再调用some_8secs_function

更新:

这仍然无效:

(function(callback){
    $('#art1').animate({'width':'1000px'},1000);
    callback();
})((function(callback2){
    $('#art2').animate({'width':'1000px'},1000);
    callback2();
})(function(){
    $('#art3').animate({'width':'1000px'},1000);
}));
Run Code Online (Sandbox Code Playgroud)

三个动画同时开始

我的错误在哪里

javascript closures asynchronous callback

138
推荐指数
5
解决办法
24万
查看次数

我应该在C++中使用std :: function还是函数指针?

在C++中实现回调函数时,我是否还应该使用C风格的函数指针:

void (*callbackFunc)(int);
Run Code Online (Sandbox Code Playgroud)

或者我应该使用std :: function:

std::function< void(int) > callbackFunc;
Run Code Online (Sandbox Code Playgroud)

c++ function std callback c++11

128
推荐指数
4
解决办法
5万
查看次数

多个ajax调用的jQuery回调

我想在点击事件中进行三次ajax调用.每个ajax调用都执行不同的操作,并返回最终回调所需的数据.呼叫本身并不依赖于彼此,它们都可以同时进行,但是当所有三个呼叫完成时,我希望最终回调.

$('#button').click(function() {
    fun1();
    fun2();
    fun3();
//now do something else when the requests have done their 'success' callbacks.
});

var fun1= (function() {
    $.ajax({/*code*/});
});
var fun2 = (function() {
    $.ajax({/*code*/});
});
var fun3 = (function() {
    $.ajax({/*code*/});
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery callback

126
推荐指数
4
解决办法
15万
查看次数