通过在节点 js /javascript 中使用 Promise 从 fs.readdir 返回值
returning values from fs.readdir by using Promise in node js /javascript
function fileType() {
return new Promise((resolve, reject) => {
let Fields = fs.readdir(
path.resolve(__dirname, "access"),
(err, files) => {
if (err) {
reject(err);
return;
} else {
files.map((file) => {
return file.split(".").slice(0, -1).join(".");
});
}
}
);
resolve(Fields);
});
}
async function ambitious(data) {
let fields = [];
if (data.collections) {
fields= await fileType();
} else {
if(data.types.access){
fields.push(data.config.access);
}
else{
fields= await fileType();
}
}
return {
data_name: data.name,
data_access: data.config,
data_encrypted: data.encrypt,
data_fields: fields,
};
}
我在这里尝试 return 来自 if 语句的字段值并将其存储在 data_fields
这里的问题是我正在从 else 语句中获取值,但是当我尝试从 If 语句中获取 return 值时,它显示未定义
因为我想读取访问权限中存在的所有文件并删除文件扩展名,并且我想将其作为数组存储在 data_fields
例如,如果文件存在于 access
let files=[ 'config.sql','admin.xml', 'user_manual.txt' ]
为此,我使用拆分和切片删除了 data_fields
中数组格式的所有扩展和 return 数据
我不知道如何从 fs.readdir 中 return 值并将其存储在 data_fields
中
这样试试
function fileType() {
return new Promise((resolve, reject) => {
fs.readdir(
path.resolve(__dirname, "access"),
(err, files) => {
if (err) {
reject(err);
} else {
resolve(files.map((file) => { // resolve here
return file.split(".").slice(0, -1).join(".");
}))
}
}
);
// if you resolve you promise here, you resolve it before the readdir has been resolved itself.
});
}
Node 已经提供了 fs
API 的 Promise 版本。您不需要将回调版本包装在 Promise 中。
import { promises } from "fs";
async function fileType () {
let files = await promises.readdir(path.resolve(__dirname, "access"));
return files.map( file => file.split(".").slice(0, -1).join("."));
}
function fileType() {
return new Promise((resolve, reject) => {
let Fields = fs.readdir(
path.resolve(__dirname, "access"),
(err, files) => {
if (err) {
reject(err);
return;
} else {
files.map((file) => {
return file.split(".").slice(0, -1).join(".");
});
}
}
);
resolve(Fields);
});
}
async function ambitious(data) {
let fields = [];
if (data.collections) {
fields= await fileType();
} else {
if(data.types.access){
fields.push(data.config.access);
}
else{
fields= await fileType();
}
}
return {
data_name: data.name,
data_access: data.config,
data_encrypted: data.encrypt,
data_fields: fields,
};
}
我在这里尝试 return 来自 if 语句的字段值并将其存储在 data_fields
这里的问题是我正在从 else 语句中获取值,但是当我尝试从 If 语句中获取 return 值时,它显示未定义
因为我想读取访问权限中存在的所有文件并删除文件扩展名,并且我想将其作为数组存储在 data_fields
例如,如果文件存在于 access
let files=[ 'config.sql','admin.xml', 'user_manual.txt' ]
为此,我使用拆分和切片删除了 data_fields
中数组格式的所有扩展和 return 数据我不知道如何从 fs.readdir 中 return 值并将其存储在 data_fields
中这样试试
function fileType() {
return new Promise((resolve, reject) => {
fs.readdir(
path.resolve(__dirname, "access"),
(err, files) => {
if (err) {
reject(err);
} else {
resolve(files.map((file) => { // resolve here
return file.split(".").slice(0, -1).join(".");
}))
}
}
);
// if you resolve you promise here, you resolve it before the readdir has been resolved itself.
});
}
Node 已经提供了 fs
API 的 Promise 版本。您不需要将回调版本包装在 Promise 中。
import { promises } from "fs";
async function fileType () {
let files = await promises.readdir(path.resolve(__dirname, "access"));
return files.map( file => file.split(".").slice(0, -1).join("."));
}