我无法在Grunt中正确排序任务。
我正在构建的内容中包含了大量代码,因此我将简化代码以向您展示我正在努力解决的问题。我有一个文件夹,其中有一堆以4位ID号开头的文件。每个ID大约有12个文件,总JSON数据约为200MB。
我的任务看起来像这样:
// Run data by ID
grunt.registerTask('run', 'Publish data for a single ID', function(id) {
var done = this.async();
// (1) Process data for that ID and store it into 6 huge arrays
// (2) DB connection opened and each array is inserted
// into 6 different collections via mongoose
grunt.log.ok('ID '+id+' has processed');
db.close(), done();
});
此任务可以正常工作。根据ID的总文件大小,此任务需要每个ID 15-45秒。
我的下一个挑战是更进一步,使用grunt.file.recurse()查找目录中的所有ID,然后为每个id启动后续“运行”任务。没有进入grunt.file.recurse(),这是一个如何运行3个ID的基本示例:
// Run data
grunt.registerTask('runALL', 'Publish all data', function(id) {
grunt.task.run(['run:0001','run:0002','run:0003']); // etc
});
当我发出命令“grunt runALL”时,咕噜日志错误地说......
>> ID 0001 has processed
>> ID 0001 has processed
>> ID 0002 has processed
>> ID 0001 has processed
>> ID 0002 has processed
>> ID 0003 has processed
所以你可以看到......每次进入另一次迭代时,它都会从头开始。相反,我希望任务按顺序运行,结果如...
>> ID 0001 has processed
>> ID 0002 has processed
>> ID 0003 has processed
我做错了什么,如何让每个ID仅从“runALL”任务运行一次?感谢您提供任何建议。