用函数回调封装JavaScript

用函数回调封装JavaScript,javascript,jquery,Javascript,Jquery,我有一个chrome扩展,有很多代码行。越来越多的人要求我在其他浏览器(如firefox)上提供该扩展 因为它是chrome的扩展,所以包含了很多chrome特有的功能。开始时,我想将所有特定于chrome的方法放在一个javascript文件“chrome.js”中,并用我自己的方法封装chrome函数,以便轻松创建其他特定于浏览器的方法 对于简单的方法,这非常容易: function geti18nMessage(messageId) { return chrome.i18n.getM

我有一个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问题是我问题的一个真实例子。

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

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(...);
   });
}

只需给它一个回调参数,就像本机的
sendMessage
方法一样?我看这里没有问题,你能澄清这个问题吗?比预期的容易。谢谢:)