在node.js中的for循环之后完成多个writeFile函数完成时的promise

首先,这是我现在的代码的一部分:

return new Promise(function(resolve, reject) { for (var i = 1; i <= variables; i++) { fs.writeFile("file-" + i + ".txt", dataString + ' ' + i + ' 0', "utf-8"); } if (i == variables) resolve('Files have been written'); else reject('Some error occured'); }) 

我的问题是,我不知道如何告诉我的承诺,解决所有文件写入writeFile()是asynchronous后。 我想要做的是在我的下一个then()使用这些文件,当他们完全写入我的驱动器。 有人可以帮我吗? 我现在有点迷路,也是node.js的新手,请耐心等待:)

提前致谢!

#UPDATE 1:

  var promises = []; for (var i = 1; i <= variables; i++) { promises.push(Promise.resolve( new Promise(function(resolve, reject) { fs.writeFile('file-' + i + '.cnf', dimacs2 + ' ' + i + ' 0', 'utf-8', function(err) { if (err) { reject(err); } else { resolve(); } }); } ))); } Promise.all(promises).then(function() { // code that runs after files have been written }); 

也许你正在寻找这样的东西:

 Promise.all( variables.map(function (variable, i) { return new Promise(function (resolve, reject) { fs.writeFile("file-" + i + ".txt", dataString + ' ' + i + ' 0', "utf-8", function (err) { if (err) { reject(err); } else { resolve(); } }); }); }) ) .then(function () { // Files have been written }) .catch(function (err) { // Some errors occured });