У меня есть два разных обработчика, прослушивающих событие onCompleted
. Если они совпадают / совпадают с одним и тем же URL-адресом и выполняются одновременно, он вызывает оба обработчика несколько раз.
Пример:
chrome.webNavigation.onCompleted.addListener(
() => {
console.log('aaa')
// would run some custom logic here
},
{ url: [{ urlContains: 'git' }] },
)
chrome.webNavigation.onCompleted.addListener(
() => {
console.log('bbb')
// other custom logic
},
{ url: [{ urlContains: 'hub' }] },
)
Приведенный выше журнал регистрирует переход к github.com
:
aaa
bbb
aaa
bbb
Я бы ожидал, что он будет регистрировать каждый оператор один раз. Если перейти к URL-адресу, который просто соответствует первому фильтру прослушивателя (например, git-tower.com
), он регистрирует его только один раз - так что, похоже, это происходит только в том случае, если оба запускаются.
Почему это имеет экспоненциальный характер (n ^ п) эффект?