2017-10-05 4 views
0

Bonjour à tous,Comment pousser plusieurs fonctions avec args dans un tableau

Dans un module Node.js (une file d'attente personnalisée) je travaille sur, J'utilise le queue module, et je dois pousser dans son array "jobs" plusieurs fonctions avec un argument (un entier pour l'heure estimée) Lorsque je lance la file d'attente, une erreur indique que le travail n'est pas une fonction. Je pense que je comprends pourquoi, c'est parce que la fonction "process" est exécutée quand je la pousse. Mais j'ai besoin d'exécuter ce processus plus tard avec des arguments.

mon code:

module.exports = Queue 
var process = require("../test/processjob") 
var q = require("queue"); 

function Queue(options) { 
    if (!(this instanceof Queue)) { 
    return new Queue(options); 
    } 
    options = options || {} 
    this.queue = q(); 
    /* 
handling other options 
*/ 
} 

Queue.prototype.processJob = function() { 

    for (var i = 0, len = this.tasks.length; i < len; i++) { 

    this.queue.push(process.process(this.tasks[i].estimated_time));// <== push here 
} 
this.queue.start(); //<== exception here 
} 

Merci beaucoup et désolé pour mon mauvais anglais.

Répondre

0

Pour pousser une fonction dans un tableau, que vous voulez exécuter à un moment ultérieur, vous pouvez envelopper cette fonction avec une autre fonction, à savoir:

this.queue.push(
    function(cb) { 
    process.process(this.tasks[i].estimated_time) 
    cb(); 
    } 
);// <== push here 

Ou en utilisant ES6

this.queue.push((cb) => { 
    process.process(this.tasks[i].estimated_time); 
    cb(); 
}); 
+0

Donc, j'ai essayé votre solution, et il semble fonctionner en partie, l'exception est partie, mais quand démarrer la file d'attente (avec [queue.start()] (https://www.npmjs.com/package/ queue # qstartcb)) les tâches ne semblent pas traiter. –

+0

Ok laissez-moi jeter un oeil à la bibliothèque de la file d'attente que vous avez mentionnée pour voir s'il y a quelque chose de mal dans votre implémentation – linasmnew

+0

essayer ma mise à jour – linasmnew