为什么Promise不应该异步?以及我该如何更改此功能?
有了这个,我正在使用gridFS处理一些文件,它按预期工作。但是现在我收到了不使用异步诺言的错误提示。如果我删除async
,则该功能不再起作用。
export async function getFiles () {
await db.connect()
const Images = db.gfs
return new Promise(async function (resolve, reject) { // <-- linting error
Images
.find()
.toArray((err, files) => {
if (err) reject(Error(err))
else if (!files) reject(Error('Failed to retrieve pending files'))
if (anyCondition) { resolve(something) }
else { resolve(files.filter(file => !file.metadata)) }
})
})
}
答案 0 :(得分:1)
这可以与某些功能模块化一起使用:
async function otherGetFiles(){
await db.connect();
return await getFiles (db);
}
export function getFiles (db) {
const Images = db.gfs
return new Promise(async function (resolve, reject) {
Images
.find()
.toArray((err, files) => {
if (err) reject(Error(err))
else if (!files) reject(Error('Failed to retrieve pending files'))
// do some things here...
resolve(files.filter(file => !file.metadata))
})
})
}
答案 1 :(得分:0)
请尝试使用此代码。这样可以正常工作,而不会出现任何错误或警告。
export async function getFiles() {
await db.connect()
const Images = db.gfs
return await new Promise(function (resolve, reject) {
Images
.find()
.toArray((err, files) => {
if (err) reject(Error(err))
else if (!files) reject(Error('Failed to retrieve pending files'))
// do some things here...
resolve(files.filter(file => !file.metadata))
})
})
}