🏃
一括系send()はリレー式もアリ
親から複数の子に一括でsend()したい時に、回数制限とかで色々面倒だね。
そうだね、こういう回避方法もあるね。という記事です。
親のsend()が1回で済んでいる所がポイント
親がすべての子に向かってsend()するわけではなく、子が次の子にsend()します。
親側で制限が必要になるような数の場合を考えると結構早そう。
ItemHandle配列を乗っけてsend()する
子はItemHandleの配列からpop()し、それにsend()すればOK。
より速度を求めたり行き先を分岐させるとかなら、配列を多段にするとかで色々アレンジできそう。
具体的なコード
だいたいこんな感じになるかと思います。
動作確認してないので、雰囲気でお願いします!!!
//親側
$.onInteract(p => {
const handles = $.getItemsNear($.getPosition(), Infinity);
const next = handles.pop();
const arg = {};
arg.nexts = handles;
arg.body = "送りたい情報の本体";
next.send("broadcast", arg);
});
//子側
$.onReceive((messageType, arg, sender) => {
if(messageType === "broadcast"){
//arg.bodyを使ってあれこれ処理
const next = arg.nexts.pop();
if(next != null){
next.send("broadcast", arg);
}
}
});
それでは良きsend()ライフを!!!!
Discussion