Javascript异步/承诺,承诺待定,现在缺失)参数列表后
我一直通过以下代码存根获得承诺{pending}:Javascript异步/承诺,承诺待定,现在缺失)参数列表后,javascript,node.js,express,promise,async-await,Javascript,Node.js,Express,Promise,Async Await,我一直通过以下代码存根获得承诺{pending}: const files = require('./controllers/search/files'); console.log( (async() => { return new Promise((resolve, reject) => { resolve(await files.getArray(PATH)); }); })() ); Node.JS在解析
const files = require('./controllers/search/files');
console.log(
(async() => {
return new Promise((resolve, reject) => {
resolve(await files.getArray(PATH));
});
})()
);
Node.JS在解析()后一直说我丢失了),但我不知道问题出在哪里。
我正在使用Express.JS和Node.JS。我试图从目录中获取文件名,并将它们存储在数组中以供进一步使用。语法错误是因为
wait
仅在async
函数中允许,而((解析,拒绝)=>{…}
是常规函数
问题是newpromise
是Promise构造反模式。不需要它,因为已经存在Promise(考虑到files.getArray(PATH)
返回一个Promise)
另一个问题是async
是返回承诺的常规函数的语法糖。不可能从async
iLife返回值并与console.log
同步使用
由于还不支持,代码应该用async
iLife包装:
(async() => {
console.log(await files.getArray(PATH));
})()
据我所见,
Promise()
回调缺少一个async
。而且你不需要等待外部生命结束。你需要在那里等待另一个生命来立即看到结果。async
应该移动到Promise
回调:新承诺(async(resolve,reject)=>{…})
既然files.getArray(PATH)
已经返回了一个承诺,为什么还需要另一个呢?