24

次のように、リクエストが行われた後にonRequest追加されたリスナーを削除しようとしています:chrome.extension.onRequest.addListener

chrome.extension.onRequest.addListener(
    function(request){
        chrome.extension.onRequest.removeListener();
        other_function(request);
    }
);

問題は、これが機能するかどうかわからないことです。試してみましたが、正しい答えが得られないようです。そのため、リスナーを削除したり、リスナーが存在するかどうかを確認chrome.extension.onRequest.hasListenerしたりする他の方法があるかどうか疑問に思っています。onRequest

ありがとう!

4

3 に答える 3

48

removeListener引数を取る。リスナー関数に名前を付けてから、名前で削除する必要があります。

function doStuff(request){
    chrome.extension.onRequest.removeListener(doStuff);
    other_function(request);
}
chrome.extension.onRequest.addListener(doStuff);

または、より簡潔に:

chrome.extension.onRequest.addListener(
    function doStuff(request){
        chrome.extension.onRequest.removeListener(doStuff);
        other_function(request);
    }
);
于 2012-05-05T23:03:35.283 に答える
0
// define listener(s)
const createListener = (id, bookmark) => {
  // do something
};

React.useEffect(() => { 
  // Add listener(s)
  chrome.bookmarks.onCreated.addListener(createListener);

  // Return a function that removes listener(s)
  return () => {
    chrome.bookmarks.onCreated.removeListener(createListener);
  };
}, []);
于 2022-02-01T21:51:14.807 に答える