Node.js 节点js。如何在两个函数之间共享数组?有没有不那么复杂的方法
我对nodejs非常陌生,并且一直停留在一个地方,一个函数填充数组,另一个函数读取数组 是否有任何简单的构造来同步此 代码如下所示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。这可以
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)