使用 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
函数,你会发现没有魔法,但它会用参数序列化你的函数调用,在作业进程中反序列化它,然后 运行 它。
您的内联函数无法序列化。
我需要发送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
函数,你会发现没有魔法,但它会用参数序列化你的函数调用,在作业进程中反序列化它,然后 运行 它。
您的内联函数无法序列化。