在2个插件脚本之间传递消息

Passing message between 2 addon scripts

本文关键字:消息 之间 脚本 2个 插件      更新时间:2023-09-26

我正在抽象代码,以专注于核心问题。我有一个main.js文件,它需要第二个文件optionsmod.js

我希望能够从optionsmod.jsmain.js发送消息,这样main.js就可以继续做其他事情。我不知道该怎么做。。。

下面是一个不起作用的例子。

main.js:

var optionsmod = require("optionsmod.js");
var self = require("sdk/self");
optionsmod.init();
self.port.on("message",function(){
        console.log("message received");
});

optionsmod.js:

var self = require("sdk/self");
function init(){
        console.log("here in init"); 
        //FOR THIS EXAMPLE, I'VE MADE THE CALL HERE. BUT WONT BE NORMALLY
        sendMessage();
}
function sendMessage(){
        self.port.emit("message");
        console.log("message sent");
}
exports.init = init;

我添加的代码不起作用,但有没有类似的方法?

模块之间没有默认的消息传递方式。当main.js中发生事件时,在optionsmod.js中很容易发生一些事情。只需导出函数并从main.js

main.js

var optionsmod = require("optionsmod.js");
var eventCallback = function(message) {
  console.log('message received: '+message);
};
optionsmod.init(eventCallback);

optionsmod.js

exports.init = function(eventCallback) {
  foo.on('bar', function() {
    eventCallback('the message');
    console.log('message sent');
  });
};

另一种选择是导出foo,然后从main.js调用foo.on,但这可能会破坏编写单独模块的全部目的,在这种情况下,我链接到的文档会有所帮助。坦率地说,你可能可以使用这些文档来创建你自己的专有消息系统,但我认为你最好用上面的术语来思考。