firebase - @typescript-eslint/no-misused-promises 和 new Promise(() => return resolve())
问题描述
我从firebase functions samples获得的函数中有一个 Promise(() => return resolve()) 模式。
const appendPromise = (requestWithoutAuth: {
spreadsheetId: any
range: string
valueInputOption: string
insertDataOption: string
resource: { values: any[][] }
}): Promise<any> => {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
return new Promise((resolve, reject) => {
return getAuthorizedClient().then((client) => {
const sheets = google.sheets('v4')
const request = requestWithoutAuth
request.auth = client
return sheets.spreadsheets.values.append(request, (err: any, response: { data: unknown }) => {
if (err) {
console.log(`The API returned an error: ${err}`)
return reject(err)
}
return resolve(response.data)
})
})
})
}
eslint 抱怨@typescript-eslint/no-misused-promises。
我不习惯,用 Promise.resolve() 替换 new Promise() 就足够了吗?
谢谢
解决方案
我相信 linter 的问题是您在Promise 构造函数中使用了 Promise。使用异步函数并将 Promise 构造函数移动一个缩进:
const appendPromise = async (requestWithoutAuth: {
spreadsheetId: any
range: string
valueInputOption: string
insertDataOption: string
resource: { values: any[][] }
}): Promise<any> => {
const client = await getAuthorizedClient();
return new Promise((resolve, reject) => {
const sheets = google.sheets('v4')
const request = requestWithoutAuth
request.auth = client
return sheets.spreadsheets.values.append(request, (err: any, response: { data: unknown }) => {
if (err) {
console.log(`The API returned an error: ${err}`)
return reject(err)
}
return resolve(response.data)
})
})
}
推荐阅读
- c# - 如果它们之间存在依赖关系,MsBuild 是否会等到另一个由不同线程启动的 MsBuild 进程完成?
- android - 如何在 Fragment 对象中控制 ViewPager 更改页面
- c++ - 如何降低生产者获取锁而消费者在使用 std::condition_variable 时无法获取锁的可能性?
- c# - 将值设置为列表中的随机属性
- java - 迭代字段列表时不显示jxls
- python - python irc bot试图使用两个不同的消息系统
- javascript - 如何使用 jQuery 中的自定义字段使数据表中的选定列可编辑?
- python-3.x - 如何使用 python 阅读电子邮件中出现的前 3 个(最新)线程
- python - 使用 python 抓取网页中的“AttributeError”
- python-3.x - ERROR MESSAGE: requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))