使用 lambda 延迟作业

Delay job with lambda

我需要发送2个动作到后台。我可以写:

myobject.delay.action1
myobject.delay.action2

但我不能确定 action2 之后 action1 结束,可以吗?

因此,我可以即时创建一个方法。

def action1and2
  myobject.action1
  myobject.action2
end

myobject.delay.action1and2 

但是创建一个命名函数来做这个无意义的组​​感觉很愚蠢,不是吗?

因此,受 JS 的启发,我想到了编写一个 lambda:

-> {
  myobject.action1
  myobject.action2
}

我可以延迟这样的功能吗?或者我的情况有其他选择吗?

myobject.delay.instance_eval { action1; action2 }

创建方法 action1and2 是正确的方法。

action1and2 将由“后台进程”调用,它将如您预期的那样在单线程中 运行。

Can I delay such function?

不,你不能。 检查 delay 函数,你会发现没有魔法,但它会用参数序列化你的函数调用,在作业进程中反序列化它,然后 运行 它。 您的内联函数无法序列化。