异步js函数和日志记录出错

时间:2017-10-28 22:56:29

标签: javascript asynchronous callback

我有回调函数这个函数:

function getStorageByKey(key, callback) {
  chrome.storage.sync.get(key, function(obj, callback) {
    var error = chrome.runtime.lastError;
       if (error) {
           console.error(error);
       }
  callback(obj)
  });
}

我正在尝试记录它的输出:

  getStorageByKey('hidden_threads', function (data) {
      console.log(data);
  });

我收到以下错误:

Error in response to storage.get: TypeError: callback is not a function
    at Object.callback (chrome-extension://nnaebcfbeghbbdkcgdicmlagdblheccm/content.js:37:3)
    at getStorageByKey (chrome-extension://nnaebcfbeghbbdkcgdicmlagdblheccm/content.js:32:23)
    at HTMLDocument.<anonymous> (chrome-extension://nnaebcfbeghbbdkcgdicmlagdblheccm/content.js:8:3)
    at j (chrome-extension://nnaebcfbeghbbdkcgdicmlagdblheccm/jquery.min.js:2:29999)
    at k (chrome-extension://nnaebcfbeghbbdkcgdicmlagdblheccm/jquery.min.js:2:30313)

1 个答案:

答案 0 :(得分:1)

function(obj, callback) - chrome.storage.sync.get完成自己的处理后,会调用此函数。因此第二个callback参数将由chrome.storage.sync.get传递(如果有的话),并且您在此函数之外声明的callback变量将被忽略。

因此删除此函数的callback参数,这将使其使用外部范围内的callback变量。