gpt4 book ai didi

javascript - 在 node.js 中的 for 循环后完成多个 writeFile 函数时解决 promise

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:09 27 4
gpt4 key购买 nike

首先,这是我当前代码的一部分:

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');
})

我的问题是我不知道如何告诉我在所有文件都被写入后解决的 promise ,因为 writeFile() 是异步的。我想要做的是在我的下一个 then() 中使用这些文件,当它们完全写入我的驱动器时。有人可以帮我吗?我现在有点迷路了,也是 node.js 的新手,所以请多多包涵 :)

提前致谢!

#更新 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
});

关于javascript - 在 node.js 中的 for 循环后完成多个 writeFile 函数时解决 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819878/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com