我不断收到带有以下代码段的Promise {未决}:
const files = require('./controllers/search/files');
console.log(
(async() => {
return new Promise((resolve, reject) => {
resolve(await files.getArray(PATH));
});
})()
);
Node.JS在resolve()之后一直说我缺少),但我看不出问题出在哪里。 我正在使用Express.JS和Node.JS。我正在尝试从目录中获取文件名,并将它们存储在数组中以备将来使用。
答案 0 :(得分:3)
语法错误是因为await
仅在async
函数内部,而((resolve, reject) => { ... }
是常规函数。
问题在于new Promise
是Promise构造的反模式。不需要它是因为已经存在诺言(考虑到files.getArray(PATH)
返回了诺言)。
另一个问题是async
是返回promise的常规函数的语法糖。从async
IIFE返回一个值并与console.log
同步使用是不可能的。
由于尚不支持top-level await
s,因此应使用async
IIFE将代码包装起来:
(async() => {
console.log(await files.getArray(PATH));
})()