回调函数作为module.export参数

时间:2014-07-14 13:12:52

标签: node.js gruntjs

有人可以解释callback()函数在下面的代码中做了什么吗?这个回调函数来自哪里?

index.js

var _ = require('lodash');
var i18n = require('./lib/i18n');

var options = {
  stage: 'options:post:configuration'
};

/**
 * postprocess
 * @param  {Object}   params
 * @param  {Function} callback
 */
module.exports = function (params, callback) {
  'use strict';

  var grunt = params.grunt;

  grunt.verbose.subhead('Running:'.bold, '"assemble-contrib-i18n"');
  grunt.verbose.writeln('Stage:  '.bold, '"' + params.stage + '"\n');

  var opts = params.assemble.options.i18n;
  grunt.verbose.writeln('Options: '.bold, require('util').inspect(opts));

  if (opts) {
    var o = {};
    var data = opts.data;
    var templates = opts.templates;
    var languages = opts.languages;

    if (templates) {
      o.templates = templates;
    }

    if (languages) {
      o.languages = languages;
    }
//data = path to a json file containing a list of languages, o = templates & languages
    var pages = i18n(data, o);

    grunt.verbose.writeln('Pages: '.bold, require('util').inspect(pages));
    params.assemble.options.pages = _.extend({}, (params.assemble.options.pages || {}), pages);

  }

  callback();
};

module.exports.options = options;

以及此index.js文件的使用位置在此gruntfile.js文件中

  "with-plugin": {
    options: {
      plugins: ['./index.js'],
      i18n: {
        data: ['test/fixtures/data/i18n.json'],
        templates: ['test/fixtures/templates/*.hbs']
      }
    },
    dest: 'test/actual/with-plugin/',
    src: '!*.*'
  },

那么这里的回调函数是什么?

1 个答案:

答案 0 :(得分:0)

正在定义的函数(接受回调作为参数)是脚本requires此模块时导入的值。所以回调是由调用脚本提供的:

require('someModule')(someParams, myCallback);
// which is the same as:
var func = require('someModule');
func(someParams, myCallback);

在您提供的代码中,回调没有什么特别之处,它只是在函数末尾执行。