gpt4 book ai didi

javascript - Promise拒绝 "... not defined",我如何找到来源

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:58 24 4
gpt4 key购买 nike

我的应用程序有很多模块,并且到处都使用 Promise。

有时,在这些模块的深处,我的代码会抛出异常并且 promise 链被拒绝。如果这个错误可以重现,我可以单步执行,直到发现异常。但事实并非如此。

如何让nodejs生成回溯来识别有罪的模块、函数和代码行?

这是一个简单的例子。

'use strict';

// pretend multiple modules, each with deep complicated chains of Promises
Promise.resolve()
.then(() => { return Promise.resolve() })
.then(() => { return Promise.resolve() })
.then(() => { return Promise.resolve() })
.then(() => {
x = "find me if you can, x is very common variable name";
return Promise.resolve
})
.then(() => { return Promise.resolve() })
.then(() => { return Promise.resolve() })
.catch((e) => { console.log("where did you come from " + e) })

上面的输出是“where did you come from ReferenceError: x is not Defined”

最佳答案

一个可能的解决方案是为 Promise 制作一个解析器包装器,它接受拒绝消息。

const resolver = (resolveItem, rejectMessage) => {
return Promise
.resolve(resolveItem)
.catch(err => Promise.reject({...err, myMessage: rejectMessage}))
}

Promise.resolve()
.then(() => { return resolver(function1(a, b, c), "1") })
.then(() => { return resolver(function2(a, b, c), "2") })
.then(() => { return resolver(function3(a, b, c), "3") })
.catch((e) => { console.log("I came from " + e.myMessage) })

关于javascript - Promise拒绝 "... not defined",我如何找到来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46371582/

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