2017-08-23 1 views
-1
main.js 
var sendTickets = [] 

code1.js 
for(i=0;i<100;i++){ 
sendTickets.push(i); 
} 

code2.js 
sendTickets.forEach(function(element){console.log(element);}) 

Je règle array-sendTickets dans main.js. Et je veux remplir ce tableau dans code1.js et l'afficher dans code2.js. Est-il possible dans nodejs?Je veux définir des valeurs pour array dans un processus et y accéder dans un autre nodejs

+0

Il existe de nombreuses solutions IPC (Inter Process Communication), mais vous devez être plus précis sur ce que vous essayez d'accomplir exactement. Votre exemple est trop simple et à cause de cela, cela n'a pas beaucoup de sens. – robertklep

+0

pas je ne veux pas IPC sans IPC Je veux le faire. –

+0

Je veux dire IPC en général, pas quelque chose de spécifique. Vous avez besoin de _some_ forme d'IPC parce que vous traitez des processus séparés ... – robertklep

Répondre

0

Vous pouvez utiliser la portée globale, puisque JS est un seul thread d'exécution, vous ne serez même pas confronté à une condition de concurrence.

main.js: 
global.sendTickets = [] 

code1.js 
for(i=0;i<100;i++){ 
global.sendTickets.push(i); 
} 

code2.js 
global.sendTickets.forEach(function(element){console.log(element);}) 
+0

'global' n'est pas partagé entre les processus.Ils ne se contentent pas de diviser le code sur des fichiers séparés, mais aussi sur des processus. – robertklep

+0

alors est-il d'autres solutions –

+0

@hariprasad comme je l'ai dit: IPC. 'process.send()', Redis, ØMQ, RabbitMQ, Kafka, NSQ, faites votre choix. – robertklep

0

Redis

Redis est une source ouverte (BSD autorisé), la structure de données en mémoire magasin, utilisé comme une base de données, le cache et le courtier de messages.

var redis = require('redis'); 
var client = redis.createClient(); //creates a new client 

Par défaut, redis.createClient() utilisera 127.0.0.1 et 6379 comme le nom d'hôte et le port respectivement.

Article : Using Redis with Node.js

Vous pourrez définir/obtenir le tableau avec aucun problème de tout processus/machine à

(Il pourrait être exagéré par rapport à bifurquer un enfant et en utilisant des nœuds par défaut ipc pour faire la même)

child_process.fork

Si le processus Node.js est donné naissance à un canal IPC (voir la Child Process et Cluster documentation), l'événement 'message' est émis chaque fois qu'un message envoyé par un processus parent utilisant childprocess.send() est reçu par le processus fils.

Vous pouvez donc avoir un main.js et un fork code1.js & code2.js comme enfants.