用函数回调封装JavaScript

时间:2014-11-10 22:42:14

标签: javascript jquery

我有一个带有大量代码的chrome扩展。越来越多的人要求我在其他浏览器(如firefox)上提供该扩展。

因为它是chrome扩展,所以包含了许多特定于chrome的功能。在我开始时,我想将所有特定于chrome的方法放在javascript文件“chrome.js”中,并使用我自己的chrome函数封装,这样我就可以轻松地创建其他特定于浏览器的方法。

对于简单的方法来说,这很容易:

function geti18nMessage(messageId) {
   return chrome.i18n.getMessage(messageId)
}

如何封装(异步)返回函数的方法

示例:

chrome.runtime.sendMessage(
            {
                Action: "Load"
            }, function (response)
    {
    console.log("response is "+response);
    });

这不是特定于Chrome的,但Chrome问题是我的问题的真实例子。

1 个答案:

答案 0 :(得分:2)

你可以像任何其他参数一样传递函数:

function sendMessage(options, fn) {
   return chrome.runtime.sendMessage(options, fn);
}

这假设您致力于在所有平台上使用相同的Chrome回调方案。如果你想将回调自定义为你自己设计的东西,那么你可以像这样替换它:

function sendMessage(options, fn) {
   return chrome.runtime.sendMessage(options, function() {
       // do any processing of the chrome-specific arguments here
       // then call the standard callback with the standard arguments you want to
       // support on all platforms
       fn(...);
   });
}