Node.js 节点js。如何在两个函数之间共享数组?有没有不那么复杂的方法

Node.js 节点js。如何在两个函数之间共享数组?有没有不那么复杂的方法,node.js,synchronization,atomic,Node.js,Synchronization,Atomic,我对nodejs非常陌生,并且一直停留在一个地方,一个函数填充数组,另一个函数读取数组 是否有任何简单的构造来同步此 代码如下所示 let arr = []; let prod = function() { arr.push('test'); }; let consume = function() { process(arr.pop()); }; 我确实找到了一些复杂的方法:( 非常感谢你的帮助。。。☺️ 通过同步,您可能意味着应用程序一侧的推送应该触发另一侧的pop。这可以

我对nodejs非常陌生,并且一直停留在一个地方,一个函数填充数组,另一个函数读取数组

是否有任何简单的构造来同步此

代码如下所示

let arr = [];
let prod = function() {
    arr.push('test');
};

let consume = function() {
    process(arr.pop());
};
我确实找到了一些复杂的方法:(


非常感谢你的帮助。。。☺️

通过同步,您可能意味着应用程序一侧的推送应该触发另一侧的pop。这可以通过使用NodeJS模块的事件驱动方法实现

然而,在简单的情况下,您可以尝试使用中介对象的另一种方法,该方法对数组操作进行封装,并利用提供的回调实现可观察的行为

// Using the Modular pattern to make some processor
// which has 2 public methods and private array storage
const processor = () => {
  const storage = [];

  // Consume takes value and another function
  // that is the passed to the produce method
  const consume = (value, cb) => {
    if (value) {
      storage.push(value);
      produce(cb);
    }
  };

  // Pops the value from storage and
  // passes it to a callback function
  const produce = (cb) => {
    cb(storage.pop());
  };

  return { consume, produce };
};

// Usage
processor().consume(13, (value) => {
  console.log(value);
});

这确实是一个noop示例,但我认为这应该让您对如何使用观察者行为和基本JavaScript回调构建您提到的“同步”机制有一个基本的了解。

您可以使用回调在两个函数之间共享数据

function prod(array) {
  array.push('test1')
}

function consume() {
  prod(function (array) {
    console.log(array)
  })
}

你到底想实现什么?你说的同步是什么意思?嗨,@kapil。你能用下面的答案解决你的问题吗?谢谢@KidBinary,我已经标记它已解决:)@kapil:谢谢,虽然找出解决方案是否正确更有趣:)@KidBinary:当然它是正确的:)适合我当前的需求,而且我也意识到我可以在我的项目的许多其他地方使用这种方法。谢谢(y)