节点js。如何在两个函数之间共享一个数组?有没有更简单的方法

Node js. How to share an array between two functions? Is there any less complicated way

我是 nodejs 的新手,并且卡在一个函数填充数组而另一个函数从中读取的地方。

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

代码如下所示

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

let consume = function() {
    process(arr.pop());
};

我确实找到了一些复杂的方法:(

非常感谢您的帮助...☺️

您所说的同步可能意味着应用程序一侧的推送应该触发另一侧的弹出。这可以通过使用 NodeJS Events 模块的不那么简单的事件驱动方法来实现。

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

// 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 回调构建您提到的 "synchronization" 机制有一个基本的了解。

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

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

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