标签: callback

如何使用类方法作为回调函数?

如果我array_walk在类函数内部使用同一个类的另一个函数

class user
{
   public function getUserFields($userIdsArray,$fieldsArray)
   {

     if((isNonEmptyArray($userIdsArray)) && (isNonEmptyArray($fieldsArray)))
     {
         array_walk($fieldsArray, 'test_print');
     }
   }


  private function test_print($item, $key)
  {
         //replace the $item if it matches something
  }

}
Run Code Online (Sandbox Code Playgroud)

它给我以下错误 -

警告: array_walk()[function.array-walk]:无法调用 test_print()- 函数不存在于......

那么,我$this->test_print()在使用时如何指定array_walk()

php oop callback array-walk

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

为什么回调比承诺更"紧密耦合"?

你能解释一下下面的短语(取自Stack Overflow问题的答案,在Javascript中Deferred,Promise和Future之间有什么区别?)?

使用jQuery promises反对使用以前的jQuery回调有什么优点?

不是直接将回调传递给函数,而是使用promises可以导致紧密耦合的接口,而是可以分离对同步或异步代码的关注.

javascript jquery callback promise

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

Glide听众不起作用

我正在使用Glide加载图像,我添加了一个监听器,以了解资源何时准备好或是否存在任何类型的错误:

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a bug with custom views
    .dontAnimate()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .listener(new RequestListener<String, GlideDrawable>() {
        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            // do something
            return true;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            // do something
            return true;
         }
    })
    .into(mCustomImageView);
Run Code Online (Sandbox Code Playgroud)

该应用程序永远不会在内部运行onResourceReady,onException但如果我删除了侦听器并让异步下载没有回调,它运行正常:

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a …
Run Code Online (Sandbox Code Playgroud)

android callback imageview android-glide

35
推荐指数
5
解决办法
3万
查看次数

观察员与回调

我想过使用观察者或回调.什么时候应该使用观察者?

你可以做以下事情:

# User-model
class User << AR
  after_create :send_greeting!

  def send_greeting!
    UserNotifier.deliver_greeting_message(self)
  end

end

#observer
class UserNotifier << AR
  def greeting_message(user)
  ...
  end
end
Run Code Online (Sandbox Code Playgroud)

或者您可以创建一个观察者并让它在用户创建时观察...

你推荐什么?

ruby-on-rails callback observer-pattern

34
推荐指数
3
解决办法
1万
查看次数

我什么时候应该在jquery函数中使用return false?

我找到了很多像这样的函数:

$(function() {
    $("body a").click(function() {
        alert(this.innerHTML);
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

this$(this)jquery 之间的区别是什么?

他们都有一条线return false;- 我不知道什么时候应该return false在jquery函数中使用它并且不知道它的用途是什么?

javascript jquery callback return-value

34
推荐指数
2
解决办法
5万
查看次数

Objective-C回调处理程序

我有一个回调方法,我必须工作,但我想知道如何传递值.

我有的是这个:

@interface DataAccessor : NSObject
{
    void (^_completionHandler)(Account *someParameter);

}


- (void) signInAccount:(void(^)(Account *))handler;
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但我想将值传递给方法.这看起来怎么样?就像是:

- (void) signInAccount:(void(^)(Account *))handler user:(NSString *) userName pass:(NSString *) passWord;
Run Code Online (Sandbox Code Playgroud)

methods objective-c callback ios objective-c-blocks

34
推荐指数
1
解决办法
5万
查看次数

ActiveRecord回调列表

我现在已经经历了一段时间的rails源代码,我认为除了以下方法之外还有更好的方法来获取所有回调列表:ActiveRecord::Callbacks::CALLBACKS- 这是一个常量列表.

这意味着如果你使用像devise_invitable这样的宝石,它会添加一个:invitation_accepted用分数调用的新回调:after,:before然后ActiveRecord::Callbacks::CALLBACKS就无法工作了.

除了打开rails模块并确保每个模型类的内部回调列表之外,您知道一个简单的修复方法吗?

activerecord ruby-on-rails callback

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

如何使用Zurb Foundation显示开放,打开,关闭,关闭的回调函数?

在zurb foundation的网站http://foundation.zurb.com/docs/reveal.php上,他们列出了一些选项,包括

open:在模态打开之前"触发"的回调函数.

打开:在打开模态后触发'的回调函数.

close:在模态准备关闭之前"触发"的回调函数.

closed:关闭模态后触发''的回调函数.

但我不知道如何将它们与我的模态一起使用.我试过了

$('#myModal').closed(function() {});

$('#myModal').trigger('reveal:closed')( {});

$('#myModal').reveal.closed(function() {});

$('#myModal').reveal().closed(function() {});

我用谷歌搜索,但没有发现.谁可以解释它或给我一个例子或提供相关链接?

谢谢!有用!

我还有另一个与揭密()相关的密切相关的问题

<a href="#" class="button" data-reveal-id="myModal2">Click Me For A Modal</a>);

我试图添加一个像data-closeOnBackgroundClick="false"似乎无法工作的属性.什么应该是正确的语法?它也适用于回调函数吗?

events modal-dialog callback javascript-events zurb-foundation

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

回调的优缺点(std :: function/std :: bind)与接口(抽象类)

我正在使用Boost.Asio在C++ 11中创建服务器应用程序.我创建了一个类,Server它负责接受新的连接.它基本上只是:

void Server::Accept() {
  socket_.reset(new boost::asio::ip::tcp::socket(*io_service_));
  acceptor_.async_accept(*socket_,
                         boost::bind(&Server::HandleAccept, this, boost::asio::placeholders::error));
}

void Server::HandleAccept(const boost::system::error_code& error) {
  if (!error) {
    // TODO
  } else {
    TRACE_ERROR("Server::HandleAccept: Error!");
  }
  Accept();
}
Run Code Online (Sandbox Code Playgroud)

我找到了两种方法(我确定还有更多)来"修复" TODO注释,即将套接字移动到应该去的地方.在我的情况下,我只想将它返回到拥有该Server实例的类实例(然后将其包装在一个Connection类中并将其插入到列表中).

  1. Server在其构造函数中有一个参数:std::function<void(socket)> OnAccept调用它HandleAccept.
  2. 我创建了一个抽象类,IServerHandler或者其他什么,它有一个虚方法OnAccept.Server需要IServerHandler在其构造函数的参数和类拥有实例的服务器实例扩展IServerHandler,构建Server*this作为参数.

选项1与选项2的优缺点是什么?还有更好的选择吗?我的Connection班级(OnConnectionClosed)中遇到了同样的问题.此外,根据我决定如何设计系统,它可能需要一个OnPacketReceivedOnPacketSent回调.

c++ interface callback boost-asio c++11

34
推荐指数
1
解决办法
6061
查看次数

谁在使用多处理池的apply_async方法时运行回调?

我正在尝试了解使用多处理池的apply_sync方法时幕后发生的一些事情.

谁运行回调方法?它是调用apply_async的主要进程吗?

假设我发送了一大堆带回调的apply_async命令,然后继续我的程序.当apply_async开始完成时,我的程序仍在执行操作.当主进程仍然忙于脚本时,回调是如何运行我的"主进程"的?

这是一个例子.

import multiprocessing
import time

def callback(x):
    print '{} running callback with arg {}'.format(multiprocessing.current_process().name, x)

def func(x):
    print '{} running func with arg {}'.format(multiprocessing.current_process().name, x)
    return x

pool = multiprocessing.Pool()

args = range(20)

for a in args:
    pool.apply_async(func, (a,), callback=callback)

print '{} going to sleep for a minute'.format(multiprocessing.current_process().name)

t0 = time.time()
while time.time() - t0 < 60:
    pass

print 'Finished with the script'
Run Code Online (Sandbox Code Playgroud)

输出就像是

使用arg 0运行func的PoolWorker-1

PoolWorker-2使用arg 1运行func

PoolWorker-3使用arg 2运行func

MainProcess进入休眠状态< - 主进程正忙

PoolWorker-4使用arg 3运行func

使用arg …

python parallel-processing callback multiprocessing

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