我可以拒绝 dojo/Deferred 而不会在浏览器控制台中出现错误吗?

Can I reject a dojo/Deferred without getting an error in the browser console?

我希望能够拒绝 dojo/Deferred 对象,而不会在浏览器的控制台中显示为错误。其中许多拒绝并不是真正的错误。它们只是拒绝,是过程的一部分,没有遵循它们的主要执行路径,但也没有以灾难告终。我更担心这些虚假的错误报告,因为我捕获了错误日志并将它们发送到服务器以进行可能的进一步分析(处于 Beta 测试阶段的大型产品)。

有人做过吗?

// assuming we're running in a Dojo environment

require(["dojo/Deferred"], 
function(Deferred) {
    var d = new Deferred();
    d.reject("I don't want to see this on the console !");
});

PS :"write your own Deferred class by copying/changing the one from Dojo's open source code" 之类的答案不是我所期待的那种。 ;)

当然,您只需要 .catch() 某处的拒绝(如果您愿意,可以忽略它们)。同步 thrown 错误也是如此 - 如果您不将代码包装在 try/catch 中,异常将显示在控制台中。你需要明确地这样做,否则它会被认为是意外的 error/rejection 并被记录下来。