要在node.js中的两个线程之间传递引用吗

要在node.js中的两个线程之间传递引用吗,node.js,multithreading,queue,pass-by-reference,Node.js,Multithreading,Queue,Pass By Reference,我试图在node.js中实现以下步骤 可以使用我的RESTAPI下订单并支付 一旦订单状态从下单变为已付,它将在数据结构中排队 一个单独的线程持续运行,以检查队列中是否有订单。如果队列中有订单,则该订单将退出队列,并开始准备、服务和收集。这里,队列中可能有许多订单,或者根本没有 我在这里分享我的代码 //order.js var Queue = require('queuejs'); var queue = new Queue(); queue.enq("hello"); const thr

我试图在node.js中实现以下步骤

  • 可以使用我的RESTAPI下订单并支付
  • 一旦订单状态从下单变为已付,它将在数据结构中排队
  • 一个单独的线程持续运行,以检查队列中是否有订单。如果队列中有订单,则该订单将退出队列,并开始准备服务收集。这里,队列中可能有许多订单,或者根本没有
我在这里分享我的代码

//order.js

var Queue = require('queuejs');
var queue = new Queue();
queue.enq("hello");
const threads = require('threads');
const spawn   = threads.spawn;
const thread  = spawn(function(){});

exports.payOrder = function (req, res) {

   //after changing order status to PAID in database, I enq it in queue.
    queue.enq(id);
};
exports.processOrder = function () {
   spawn("./routes/helper.js").send();
};
exports.queue = queue;
//helper.js

const Sync = require('sync');
const order = require('./order');
const dao = require('./dao');
const config = require('./config');

 Sync(function () {
    console.log("in sync");

    while (true) {
        // I got queue size always 0(zero), even though I called pay api(meaning put order into the queue by calling api) 
        if (order.queue.size() > 0) {
            console.log("here");

            var id = order.queue.deq();
            var query = "query string";
            dao.client.execute(query, [config.orderStatus.preparing, id], {prepare: true}, function (err, result) {
                Sync.sleep(5000);
                dao.client.execute(query, [config.orderStatus.served, id], {prepare: true}, function (err, result) {
                    Sync.sleep(5000);
                    dao.client.execute(query, [config.orderStatus.collected, id], {prepare: true}, function (err, result) {
                        Sync.sleep(5000);
                    });
                });
            });
        }
    }
});
我已将队列导出到order.js中,但它未与helper线程共享引用

我已经应用了很多方法来实现上述功能,但未能成功实现。
谁能给我建议一下解决办法吗

您不能与
线程
模块共享引用。您只能发送消息。您可以在不使用队列的情况下构建它,也可以使用进程外队列。一种选择是只使用两个进程和
kue
模块

例如:

var kue = require('kue')
 , queue = kue.createQueue();

queue.process('email', function(job, done){
  email(job.data.to, done);
});

function email(address, done) {
  if(!isValidEmail(address)) {
    //done('invalid to address') is possible but discouraged
    return done(new Error('invalid to address'));
  }
  // email send stuff...
  done();
}

您不能与
线程
模块共享引用。您只能发送消息。您可以在不使用队列的情况下构建它,也可以使用进程外队列。一种选择是只使用两个进程和
kue
模块

例如:

var kue = require('kue')
 , queue = kue.createQueue();

queue.process('email', function(job, done){
  email(job.data.to, done);
});

function email(address, done) {
  if(!isValidEmail(address)) {
    //done('invalid to address') is possible but discouraged
    return done(new Error('invalid to address'));
  }
  // email send stuff...
  done();
}

谢谢你的回复。抱歉,我仍然不明白如何根据我的要求使用kue模块。你能详细说明一下吗?我可以,但你甚至没有尽一点努力来应用我所说的,所以如果你学会如何做自己的编程,那就更好了。谢谢你的回复。抱歉,我仍然不明白如何根据我的要求使用kue模块。你能详细说明一下吗?我可以,但你甚至没有尽一点努力来应用我说的话,所以如果你学会如何自己编程就更好了。