gpt4 book ai didi

javascript - Promise 无法在 Node.js 上解析

转载 作者:行者123 更新时间:2023-11-28 18:48:55 25 4
gpt4 key购买 nike

目前我在使用 node.js/Promises 时遇到了很多问题。目前我正在做一些简单的事情,如下所示:

module.js

var fs = require('fs');

function myFunction() {
var files = [];
for (var i = 0; i < 100; ++i) {
files.push(fs.writeFile("file-" + i + ".txt", "file" + i, "utf-8", function(err) {
if (err)
throw err;
}));
}
Promise.all(files).then(function() {
return new Promise(function(resolve, reject) {
resolve('ok');
})
});
}
exports.myFunction = myFunction;

ma​​in.js

var test = require('./module.js');

test.myFunction().then(function(result) {
console.log(result);
})

但是,如果我运行 main.js,我的输出是:

module.myFunction().then(function(result) {
^

TypeError: Cannot read property 'then' of undefined

我不知道为什么我的模块返回一个未定义的 Promise。有人可以帮我吗?我就是无法理解这个问题。非常感谢!

而且,虽然 writeFile() 将文件写入 file-0.txt 等,但这些文件根本没有内容。

最佳答案

您的代码有两个问题:

  • 原生 fs.writeFile() 不返回 Promise
  • 你的函数不返回 promise

对于第一个问题,您可以自己编写一些包装器或使用类似 fs-promise 的东西。对于第二个问题,您确实需要函数返回所有文件的 promise 。

那么你的代码可能如下所示:

var fsp = require('fs-promise');

function myFunction() {
var files = [];
for (var i = 0; i < 100; ++i) {
files.push( fsp.writeFile("file-" + i + ".txt", "file" + i, "utf-8" ) );
}

return Promise.all( files );

}
exports.myFunction = myFunction;

关于javascript - Promise 无法在 Node.js 上解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831789/

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