MessagePorter: deleteListener()
登録済みのリスナーの登録を解除します。
構文
messagePorter.deleteListener(listener) => function | undefined
引数
-
listener
:function
登録解除する関数オブジェクトです。関数オブジェクトは
message
というany
型の引数を取り、undefined
,boolean
,Promise<void>
のいずれかを返します。
返値: function
| undefined
引数 listener
が対象の EventHnadler
から削除されればその listener
自身、そうでなければ undefined
となります。
例
const messagePorter = new MessagePorter();
const listener = (message) => console.log(listener.name, message);
const notAdded = (message) => console.log(notAdded.name, message);
// listener を登録
messagePorter.addListener(listener);
// リスナーの呼び出し
messagePorter.post({ id: "test", code: "code", param: { } });
// ==> "listener" [object Object]
// リスナーを削除
let removed = messagePorter.addListener(listener);
// 削除されたリスナーの確認
console.log(removed === listener);
// ==> true
// リスナーの呼び出し
messagePorter.post({ id: "test", code: "code", param: { } });
// ==> 何も呼ばれない
// 登録されていないリスナーを削除
removed = messagePorter.addListener(notAdded);
// 削除されたリスナーの確認
console.log(removed === undefined);
// ==> true
解説
登録済みのリスナーの登録を解除します。
対象の listener
がリスナーとして登録済みの関数であれば、その関数を解除します。登録解除後は、対象の MessagePorter
に対して post()
が呼び出されても listener
は呼び出されません。
引数 listener
が関数でないか未登録の関数の場合、deleteListener()
は何も行いません。