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() は何も行いません。