Bulljobdatastripsfunctionsfromvariables
创始人
2024-12-26 16:00:34
0

在代码中使用 json 序列化和反序列化数据,而不是使用 Bull 队列来传递数据和函数。

示例代码:

1.生产者

const Bull = require('bull');
const queue = new Bull('jobQueue');

const jobData = {
  name: 'Lucy',
  age: 20,
  sayHi: function() {
    console.log('Hello!');
  }
};

queue.add(jobData);

2.消费者

const Bull = require('bull');
const queue = new Bull('jobQueue');

queue.process(async function(job) {
  const jobData = JSON.parse(job.data);
  
  console.log(`name: ${jobData.name}, age: ${jobData.age}`);
  jobData.sayHi(); // 报错:jobData.sayHi is not a function
});

修改后的消费者代码:

const Bull = require('bull');
const queue = new Bull('jobQueue');

queue.process(async function(job) {
  const jobData = JSON.parse(job.data);
  
  console.log(`name: ${jobData.name}, age: ${jobData.age}`);
  const sayHi = eval('(' + jobData.sayHi + ')'); // 将 sayHi 函数字符串转换为函数
  sayHi(); // 输出:Hello!
});

在生产者代码中,将任务数据直接添加到队列中,不需要改动。

在消费者代码中,使用 JSON.parse 将从队列中取出的任务数据转换为对象,然后使用 eval 将任务数据中的函数字符串转换为实际的函数对象,从而能够正确的调用函数。

需要注意的是,使用 eval 函数存在一定的安全性问题,建议使用更加安全的技术来实现类似的功能,如将函数通过 HTTP 接口传递等方式。

相关内容

热门资讯

透视教学!aa poker辅助... 透视教学!aa poker辅助(透视)透视脚本下载(真是存在有挂);1、用户打开应用后不用登录就可以...
透视辅助!aapoker透视方... 透视辅助!aapoker透视方法(透视)万能辅助器(其实真的有挂)1、aapoker透视方法系统规律...
透视软件!aapoker怎么选... 透视软件!aapoker怎么选牌(透视)透视脚本下载(确实有挂)1、超多福利:超高返利,海量正版游戏...
透视安装!aa poker透视... 透视安装!aa poker透视软件(透视)脚本(好像存在有挂);1、进入游戏-大厅左侧-新手福利-激...
透视透视!aapoker透视怎... 透视透视!aapoker透视怎么用(透视)透视插件(其实存在有挂)aapoker透视怎么用是一种具有...
透视存在!aapoker如何设... 透视存在!aapoker如何设置胜率(透视)透视插件(切实真的是有挂)1、游戏颠覆性的策略玩法,独创...
透视能赢!aapoker辅助工... 透视能赢!aapoker辅助工具安全吗(透视)发牌逻辑(其实是有挂)透视能赢!aapoker辅助工具...
透视挂!aapoker万能辅助... 透视挂!aapoker万能辅助器(透视)辅助(都是有挂);1、用户打开应用后不用登录就可以直接使用,...
透视了解!aapoker辅助怎... 透视了解!aapoker辅助怎么用(透视)插件(竟然是有挂);进入游戏-大厅左侧-新手福利-激活码辅...
透视了解!aapoker怎么提... 透视了解!aapoker怎么提高中牌率(透视)透视脚本入口(其实真的有挂)1、aapoker怎么提高...