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