Почему Обещание не должно быть асинхронным? И как мне изменить эту функцию? При этом я обрабатываю некоторые файлы с использованием gridFS, и он работает как положено. Но теперь я получил ошибку lint не использовать асинхронные обещания. Если я удалю async , функция больше не будет работать.

 export async function getFiles () { await db.connect() const Images = db.gfs return new Promise(async function (resolve, reject) { // {amp}lt;-- linting error Images .find() .toArray((err, files) ={amp}gt; { if (err) reject(Error(err)) else if (!files) reject(Error('Failed to retrieve pending files')) if (anyCondition) { resolve(something) } else { resolve(files.filter(file ={amp}gt; !file.metadata)) } }) }) } 

Это будет работать с некоторой модульной функцией:

 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) ={amp}gt; { if (err) reject(Error(err)) else if (!files) reject(Error('Failed to retrieve pending files')) // do some things here... resolve(files.filter(file ={amp}gt; !file.metadata)) }) }) } 

Пожалуйста, попробуйте этот код. Это будет работать без каких-либо ошибок или предупреждений.

 export async function getFiles() { await db.connect() const Images = db.gfs return await new Promise(function (resolve, reject) { Images .find() .toArray((err, files) ={amp}gt; { if (err) reject(Error(err)) else if (!files) reject(Error('Failed to retrieve pending files')) // do some things here... resolve(files.filter(file ={amp}gt; !file.metadata)) }) }) }