Javascript异步/ Promises,承诺待定,现在在参数列表后丢失)

时间:2019-01-30 22:00:10

标签: javascript node.js express promise async-await

我不断收到带有以下代码段的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。我正在尝试从目录中获取文件名,并将它们存储在数组中以备将来使用。

1 个答案:

答案 0 :(得分:3)

语法错误是因为await仅在async函数内部,而((resolve, reject) => { ... }是常规函数。

问题在于new Promise是Promise构造的反模式。不需要它是因为已经存在诺言(考虑到files.getArray(PATH)返回了诺言)。

另一个问题是async是返回promise的常规函数​​的语法糖。从async IIFE返回一个值并与console.log同步使用是不可能的。

由于尚不支持top-level awaits,因此应使用async IIFE将代码包装起来:

(async() => {
  console.log(await files.getArray(PATH));
})()