tasks/compassMultiple.js
function(options, cb) {

      // if no sassDir or files are not identify, error.
      if (!options.sassDir) {
        grunt.log.error('compass-multiple needs sassDir for searching scss files.');
        cb(false);
      }

      // search scss files.(Additional Implementation)
      if (options.sassFiles) {

        var pathes = options.sassFiles;
        var pathesCount = pathes.length;
        var currentCount = 0;
        var files = [];
        for (var i = 0; i < pathes.length; i++) {
          glob(pathes[i], function(error, tmpFiles) {
            if (error) {
              console.log('error: ', error);
              cb(false);
            }

            files = files.concat(tmpFiles);
            currentCount++;
            if (pathesCount === currentCount) {
              // compass compile.
              grunt.log.writeln('pathes: ', files);
              compileFiles(options, files, cb);
            }
          });
        }




      } else {  // use sassDir


        var searchPath = options.sassDir + '/**/*.scss';
        glob(searchPath, function(error, files) {
          if (error) {
            console.log('error: ', error);
            cb(false);
          }

          // compass compile.
          compileFiles(options, files, cb);
        });




      }
    }
function(options, cb) {

      // if no sassDir or files are not identify, error.
      if (!options.sassDir) {
        grunt.log.error('compass-multiple needs sassDir for searching scss files.');
        cb(false);
      }

      // search scss files.(Additional Implementation)
      if (options.sassFiles) {

        var pathes = options.sassFiles;
        var pathesCount = pathes.length;
        var currentCount = 0;
        var files = [];
        for (var i = 0; i < pathes.length; i++) {
          glob(pathes[i], function(error, tmpFiles) {
            if (error) {
              console.log('error: ', error);
              cb(false);
            }

            files = files.concat(tmpFiles);
            currentCount++;
            if (pathesCount === currentCount) {
              // compass compile.
              grunt.log.writeln('pathes: ', files);
              compileFiles(options, files, cb);
            }
          });
        }




      } else {  // use sassDir


        var searchPath = options.sassDir + '/**/*.scss';
        glob(searchPath, function(error, files) {
          if (error) {
            console.log('error: ', error);
            cb(false);
          }

          // compass compile.
          compileFiles(options, files, cb);
        });




      }
    }
function ( options , cb ) { // if no sassDir or files are not identify, error. if ( ! options . sassDir ) { grunt . log . error ( 'compass-multiple needs sassDir for searching scss files.' ) ; cb ( false ) ; } // search scss files.(Additional Implementation) if ( options . sassFiles ) { var pathes = options . sassFiles ; var pathesCount = pathes . length ; var currentCount = 0 ; var files = [ ] ; for ( var i = 0 ; i < pathes . length ; i ++ ) { glob ( pathes [ i ] , function ( error , tmpFiles ) { if ( error ) { console . log ( 'error: ' , error ) ; cb ( false ) ; } files = files . concat ( tmpFiles ) ; currentCount ++ ; if ( pathesCount === currentCount ) { // compass compile. grunt . log . writeln ( 'pathes: ' , files ) ; compileFiles ( options , files , cb ) ; } } ) ; } } else { // use sassDir var searchPath = options . sassDir + '/**/*.scss' ; glob ( searchPath , function ( error , files ) { if ( error ) { console . log ( 'error: ' , error ) ; cb ( false ) ; } // compass compile. compileFiles ( options , files , cb ) ; } ) ; } }
compass task works at multi threads.
compass task works at multi threads .