Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 如何在此forEach循环之后显示成功消息?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在此forEach循环之后显示成功消息?

Javascript 如何在此forEach循环之后显示成功消息?,javascript,node.js,Javascript,Node.js,在这个脚本中,我正在检查css文件列表中的语法错误: 'use strict'; var fs = require('fs'); var chalk = require('chalk'); var rework = require('rework'); var expand = require ('glob-expand'); var conformance = require('rework-suit-conformance'); var files = expand({ filter

在这个脚本中,我正在检查css文件列表中的语法错误:

'use strict';

var fs = require('fs');
var chalk = require('chalk');
var rework = require('rework');
var expand = require ('glob-expand');
var conformance = require('rework-suit-conformance');

var files = expand({
  filter: 'isFile',
  cwd: 'build/'
}, ['**/*.css']);

files.forEach(function (file) {
  var css = fs.readFileSync('build/' + file, 'utf-8');
  try {
    rework(css).use(conformance);
  }
  catch (e) {
    console.log( chalk.red('Error in: ' + 'build/' + file) );
    console.log( chalk.red(e) );
    process.exit(1);
  }
});
如果foreach循环完成时没有错误,我想显示一条success消息:

console.log( chalk.green('Done, without errors.') );

但是我该把它放在哪里呢?正确的方法是什么?我可以把它放在文件的末尾,如果出现错误,就无法到达,但这感觉不太正确。

我认为将它放在
forEach
之后是安全的。此外,如果有错误,它将在
forEach
完成之前退出。如果forEach的
完成了,可以肯定地说一切都进行得很顺利

files.forEach(function (file) {
  var css = fs.readFileSync('build/' + file, 'utf-8');
  try {
    rework(css).use(conformance);
  }
  catch (e) {
    console.log( chalk.red('Error in: ' + 'build/' + file) );
    console.log( chalk.red(e) );
    // If any error happened, this should kill everything before proceeding
    process.exit(1);
  }
});

// If all went well, it should reach this code.
console.log( chalk.green('Done, without errors.') );

在forEach开始之前保留一个计数器变量。在catch块之后,放入以下内容:每次迭代成功完成时,递减计数器。检查计数器是否为零-如果是,则检查console.log('Success')


记录每个成功迭代的次数。如果该计数器===files.length,则执行某些操作。这是真的。那么这样做没有真正的负面影响?不将它封装在函数、回调或其他东西中感觉有点不对劲。@Sam嗯,听起来太简单了(simple有很多地方出错)。但是是的,如果应用程序在发生错误时被“杀死”,那么它绝对不可能到达
forEach
的末尾。如果是,则不会发生错误。因此,我们可以有把握地说,这是一次成功。
var fc = files.length;

files.forEach(function (file) {
  var css = fs.readFileSync('build/' + file, 'utf-8');
  try {
    rework(css).use(conformance);
  }
  catch (e) {
    console.log( chalk.red('Error in: ' + 'build/' + file) );
    console.log( chalk.red(e) );
    process.exit(1);
  }

  fc -= 1;
  if (fc === 0) {
  console.log('Success');
  }
});