Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js用于循环和Readline函数调用?_Javascript_Node.js_Asynchronous_Ecmascript 6 - Fatal编程技术网

Javascript Node.js用于循环和Readline函数调用?

Javascript Node.js用于循环和Readline函数调用?,javascript,node.js,asynchronous,ecmascript-6,Javascript,Node.js,Asynchronous,Ecmascript 6,我试图输入一系列测试分数,并确定它们在JavaScript中的平均值,我想我应该试试Node.js。函数readTestScores()利用readline的question()方法——从Node.js的模块中获取期末考试分数,内部有一个嵌套的for循环,并调用question()获取七个考试分数。见下文(是的,我知道,我的代码看起来很混乱): 以下是基于tiny cli教程使用Readline计算平均值的一些代码: 'use strict'; var aiScores = []; var i

我试图输入一系列测试分数,并确定它们在JavaScript中的平均值,我想我应该试试Node.js。函数readTestScores()利用readline的question()方法——从Node.js的模块中获取期末考试分数,内部有一个嵌套的for循环,并调用question()获取七个考试分数。见下文(是的,我知道,我的代码看起来很混乱):


以下是基于tiny cli教程使用Readline计算平均值的一些代码:

'use strict';

var aiScores = [];
var iAverage;

function add(a, b) {
    return a + b;
}

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.setPrompt('Enter exam score > ');
rl.prompt();

rl.on('line', (line) => {
  console.log(line);
  if (Number.isInteger(parseFloat(line))) {
      aiScores.push(parseFloat(line));
      console.log(aiScores);
      console.log(parseFloat(line));
      iAverage = (aiScores.reduce(add, 0)/aiScores.length);
      console.log('Current average = ' + iAverage);
  } else {
      switch(line.trim()) {
        case 'hello':
          console.log('world!');
        case 'close':
          rl.close();
          break;
        default:
          console.log(`Say what? I might have heard '${line.trim()}'`);
          break;
      }
  }
  rl.prompt();
}).on('close', () => {
  console.log('Have a great day!');
  process.exit(0);
});

以下是基于tiny cli教程使用Readline计算平均值的一些代码:

'use strict';

var aiScores = [];
var iAverage;

function add(a, b) {
    return a + b;
}

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.setPrompt('Enter exam score > ');
rl.prompt();

rl.on('line', (line) => {
  console.log(line);
  if (Number.isInteger(parseFloat(line))) {
      aiScores.push(parseFloat(line));
      console.log(aiScores);
      console.log(parseFloat(line));
      iAverage = (aiScores.reduce(add, 0)/aiScores.length);
      console.log('Current average = ' + iAverage);
  } else {
      switch(line.trim()) {
        case 'hello':
          console.log('world!');
        case 'close':
          rl.close();
          break;
        default:
          console.log(`Say what? I might have heard '${line.trim()}'`);
          break;
      }
  }
  rl.prompt();
}).on('close', () => {
  console.log('Have a great day!');
  process.exit(0);
});

看起来像是循环和回调函数实际执行的时间问题。我没有在循环中使用,所以我不明白为什么这会是一个闭包问题@你能展示一下提问的方法吗?也许有一种更简单的方法可以做到这一点,但是我们必须知道rl对象及其方法的作用。啊,它是Node.js模块的一部分。question()方法显示一个查询参数,等待用户输入,然后执行一个回调函数,并将输入作为其第一个参数。@Shilly(抱歉,不确定是否收到注释通知)看起来像是循环的计时问题,以及回调函数实际执行的时间。我在循环中没有使用,所以我不明白为什么这会是一个结束的问题@你能展示一下提问的方法吗?也许有一种更简单的方法可以做到这一点,但是我们必须知道rl对象及其方法的作用。啊,它是Node.js模块的一部分。question()方法显示一个查询参数,等待用户输入,然后执行一个回调函数,并将输入作为其第一个参数。@Shilly(对不起,不确定您是否收到有关注释的通知)
'use strict';

var aiScores = [];
var iAverage;

function add(a, b) {
    return a + b;
}

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.setPrompt('Enter exam score > ');
rl.prompt();

rl.on('line', (line) => {
  console.log(line);
  if (Number.isInteger(parseFloat(line))) {
      aiScores.push(parseFloat(line));
      console.log(aiScores);
      console.log(parseFloat(line));
      iAverage = (aiScores.reduce(add, 0)/aiScores.length);
      console.log('Current average = ' + iAverage);
  } else {
      switch(line.trim()) {
        case 'hello':
          console.log('world!');
        case 'close':
          rl.close();
          break;
        default:
          console.log(`Say what? I might have heard '${line.trim()}'`);
          break;
      }
  }
  rl.prompt();
}).on('close', () => {
  console.log('Have a great day!');
  process.exit(0);
});