在handler
我的Fastify路线的中,我将一个类的对象添加到Bull队列中。在队列的process方法中,此对象不再是类的实例。这是正常现象还是我缺少一些(或很多)基础知识?
const fastify = require('fastify')({ logger: true })
const Queue = require('bull');
let addQueue = new Queue('Add', 'redis://127.0.0.1:6379');
...
addQueue.process(function(job, done){
console.log(job.data.dataObj instanceof ClasssDefinedSomwhereElse);
}
...
fastify.route({
method: 'POST',
url: '/',
...
handler: async (request, reply) => {
if(isFirstRequest) {
classObj = new ClasssDefinedSomwhereElse();
isFirstRequest = false;
} else {
console.log(classObj instanceof ClasssDefinedSomwhereElse);
addQueue.add({dataObj: classObj});
}
addQueue.add({dataObj: classObj});
或addQueue.add(classObj);
没有区别。的handler
打印true
&的process
方法打印false
。为什么是这样?
我最终想要做的是在该process
方法中,使用刚刚传入的对象调用该类的方法。我不是来自Javascript背景,所以我认为我可能错过了一些基本的知识。任何帮助表示赞赏。
在javascript中,class
与class
在面向对象编程中不同。该类只是语法糖prototype
因此,您的软件中发生的是:
toString()
实现)JSON.parse(aJsonString)
在此过程中,没有关于的信息ClasssDefinedSomwhereElse
(就像在Java中的类序列化中那样)。因此,您需要根据Bull正在获取的简单JSON创建该类的新实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句