gpt4 book ai didi

javascript - typescript 检查 promise 正文是否未调用 `resolve`

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:48 25 4
gpt4 key购买 nike

是否有任何 typescript 配置选项或一些解决方法来检查是否没有 resolve打来电话new Promise回调?

假设我有一个 promise

new Promise(async (resolve, reject) => {
try {
// do some stuff
// but not calling resolve()
} catch (e) {
reject(e)
}
})

我希望 typescript 警告我我没有打电话 resolve() 。可能吗?

我知道我可以使用noUnusedParameters ,但有几种情况我仍然需要未使用的参数(例如 request 内的 express.Hanlder ,我只使用 response 等)

最佳答案

不,这是不可能的。了解代码是否调用某个函数(在本例中为 resolve)与 halting problem 一样困难。 。有证据表明不存在任何算法可以始终确定这一点。

为了说明这一点,我们假设确定函数是否调用 resolve 的算法存在,并可通过函数 callsResolve(func) 获得。所以callsResolve(func)将返回true当它确定func时会打电话resolve (没有实际运行 func )和 false当它确定func时不会调用resolve .

现在想象一下这个func :

function func() {
if (!callsResolve(func)) resolve();
}

...现在我们遇到了一个悖论:无论 callsResolve 的调用是什么?回来了,错了。例如,如果执行 callsResolve模拟 func 的执行(同步)并确定在预定义的超时后应返回 false ,上面是调用 resolve 的函数演示就在超时结束后。

关于javascript - typescript 检查 promise 正文是否未调用 `resolve`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com