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

我对nodejs非常陌生,并且陷入了一个函数填充数组而另一个函数读取它的地方。

有没有简单的结构来同步这个。

代码如下所示

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

我find了一些复杂的方法来做到这一点:(

非常感谢任何帮助…☺️

通过同步你可能意味着你的应用程序的一边推动应该触发另一边的stream行。 这可以通过使用NodeJS Events模块的不太平凡的事件驱动方法来实现。

然而,在简单的情况下,你可以尝试另一种方法来处理数组操作的中介对象,并利用提供的callback来实现可观察的行为。

 // 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的例子,但我认为这应该创build一个基本的理解,如何使用观察者的行为和基本的JavaScriptcallback来build立你所提到的“同步”机制。

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

 function prod(array) { array.push('test1') } function consume() { prod(function (array) { console.log(array) }) }