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