0
我想實現下面的步驟在node.js中想在node.js中
- 順序可以放置和使用我的REST的API支付兩個紗線之間傳遞引用。
- 一旦訂單狀態從PLACED改變爲PAID,將排隊的順序在隊列數據結構。
- 一個單獨的線程持續運行以檢查隊列中是否有順序。如果隊列中有命令,則它將被出隊並開始到準備好,已服務和已收集。在這裏,隊列中可能有很多訂單,或根本沒有。
我分享我的代碼在這裏
//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出口隊列但它與幫手線程沒有共享參考。
我已經應用了很多方法來實現上述功能,但無法成功實現。 任何人都可以請建議我的解決方案?
謝謝您的答覆。道歉,我仍然不明白如何根據我的要求使用kue模塊。你能詳細解釋一下嗎? –
我可以,但你甚至沒有盡我所能去應用我所說的,所以如果你學會了如何做自己的編程會更好。 –