[英]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
將被“后台進程”調用,它會按照你的預期在單線程中運行。
我可以延遲這樣的功能嗎?
不,你不能。 檢查delay
函數,您會發現沒有任何魔法,但它會使用參數序列化您的函數調用,在作業過程中將其反序列化並運行它。 您的內聯函數無法序列化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.