Функция обратного вызова прокси-сервера API истории расширений Chrome

#javascript #google-chrome-extension #proxy #browser-history #es6-proxy

#javascript #google-chrome-расширение #прокси #браузер-история #es6-прокси

Вопрос:

Я хотел бы использовать функцию обратного вызова для chrome.history.search получения элементов истории.

Вот пример:

 chrome.history.search({text: '', maxResults: 10}, function(data) {
    // ...
});
 

Для этого примера я хочу записать 10 самых последних посещенных URL-адресов.

Вот что я попробовал:

 chrome.history.search = new Proxy(chrome.history.search, {
    apply: (target, thisArg, argumentsList) => {
      console.log(argumentsList[1])     // this gives me the callback function not the data items
      return target.apply(thisArg, argumentsList)
    }
  })
 

Как мне улучшить это, чтобы прокси-функция обратного вызова chrome.history.API и регистрирует 10 самых последних посещенных URL-адресов, которые передаются функции обратного вызова?

Ответ №1:

Сделайте это в своем собственном пользовательском обратном вызове, затем вызовите исходный обратный вызов, если он присутствовал:

 chrome.history.search = new Proxy(chrome.history.search, {
  apply(target, thisObj, args) {
    const cb = typeof args[args.length - 1] === 'function' amp;amp; args.pop();
    return target.call(thisObj, ...args, res => {
      console.log(res);
      if (cb) cb(res);
    });
  },
});