这实际上是我在node.js和socket.io服务器中尝试做的事情:

var Q = require('q');

module.exports.pushMyData = function (socket, RawData, row_id) {

return Q.fcall(function () {
    layout.row_id = row_id;
}).then(function (resultData) {
    socket.emit('resultData', resultData);
    console.log("resultData emited ++++++:" + resultData);

});
};


在module.exports.pushMyData函数的范围内,我可以证明所有参数都传递正确的值,并且套接字也可以。
其他参数如下所示:

rawData = {"myset":{"id":"22","item":"150"},
       "myOtherset":{"hash":"55","branch":"150"},
       "myid":"15"}
row_id = 234


现在,我想将row_id简单地放入RawData中:
它应该在之后通过socket作为resultData发出:

resultData = {"my_set":{"id":"22","item":"150"},
       "my_other_set":{"hash":"55","branch":"150"},
       "my_id":"15",
       "row_id":234} // as a key value pair


我实际上很困惑,因为我找不到用row_id键/值填充rawData文字的方法,因此我怀疑它存在竞争条件问题。
可能是在将row_id添加到rawData之前开始了socket.emit。
对我来说是个奇迹;-)
我对Q的尝试似乎不是正确的方法。请帮忙。

最佳答案

您在这里不需要任何承诺。只需分配属性:

module.exports.pushMyData = function (socket, rawData, row_id) {
    rawData.row_id = row_id;
    socket.emit('resultData', rawData);
    console.log("resultData emited ++++++:", rawData);
};

关于javascript - 在竞争条件下,将key:value添加到nodejs模块函数中的JSON数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31059110/

10-11 08:37