2016-01-13 4 views
1

Я разрабатываю приложение Node.js, и я использую команды Vorpal. Я пытаюсь отправить значение из команды в функцию, но я не могу заставить ее работать. Я что-то делаю неправильно?Параметры и аргументы Vorpal.js

Вот код:

vorpal 
    .command('rollto <num>', 'Rolls to') 
    .action(function(num) { 
    rollto(num); 
    }); 

function rollto(num) { 
    bettime = bettimems % 60; 
    socket.emit('betting', bettime); 
    timer1 = setInterval(function() { 
     bettime--; 
     socket.emit('betting', bettime); 

     if (bettime == 0) { 
      socket.emit('random number', num);  
      console.log("Rolled to:" + num + "!!!"); 
      clearInterval(timer1); 
     } 
    }, 1000); 
} 
+0

Каков текущий результат выполнения этого? – Jared

+0

@ Jared консоль.log-выходы Подкатил к: [объект Object] !!! –

+0

Нам нужно посмотреть, что такое num, попробуйте это: console.log («Rolled to:» + JSON.stringify (num) + «!!!»); Какой результат? – Jared

ответ

4

Проблема заключается в том, что функция вы передаете Командования action имеет различные аргументы, чем предполагают.

Вот соответствующая часть из docs:

.command.action(function) 

This is the action execution function of a given command. 
It passes in an arguments object and callback. 

Actions are executed async and must either call the passed 
callback upon completion or return a Promise. 

А вот рабочий пример:

var vorpal = require('vorpal')(); 

vorpal 
.command('rollto <num>', 'Rolls to') 
.action(function(arguments, callback) { 
    rollto(arguments, callback); 
}); 

function rollto(arguments, callback) { 
    var num = arguments.num; // get 'num' parameter from arguments 
    timer1 = setInterval(function() { 
     console.log('test'); 
     console.log(num); 
     clearInterval(timer1); 
     callback(); // Don't forget to use callback() to notify vorpal 
    }, 1000); 
} 

vorpal 
    .delimiter('myapp$') 
    .show(); 

Обратите внимание, что вы на самом деле есть код асинхронной внутри setInterval, так что вам нужно использовать функцию обратного вызова() в конце, чтобы уведомить vorpal, что обработка завершена.

+0

wow Я не могу поверить, что не заметил что-то вроде этого, хорошо случается со всеми ... Сейчас он работает .. Я ухожу, чтобы немного поспать Я работаю в течение 18 часов подряд. Большое спасибо за вашу помощь!! –

+0

@HugoPires Я рад, что это помогло :) –

Смежные вопросы