1
有了Promise,为什么浏览器会两次返回拒绝,但不会两次返回解析?
我在理解javaScript时遇到了麻烦promises。我写了以下代码: var p = new Promise(function(resolve,reject){ reject(Error("hello world")); }); setTimeout(()=>p.catch(e=>console.log(e)),5000); 我立即在Chrome开发者控制台中看到以下内容: 但是,等待5秒钟后,该消息会自动变为黑色,如下图所示: 我以前从未在javaScript代码和开发人员控制台之间看到过这种行为,在这里,我的javaScript代码可以在开发人员控制台中“修改现有内容”。 因此,我决定resolve通过编写以下代码来查看是否发生相同的情况: var p = new Promise(function(resolve,reject){ resolve("hello world"); }); setTimeout(()=>p.then(e=>console.log(e)),5000); 但是在这种情况下,我的开发者控制台要等5秒钟后才显示任何内容,然后打印到hello world。 为什么在调用时将resolve和reject区别开来? 额外 我也写了这段代码: var p = new Promise(function(resolve,reject){ reject(Error("hello world")); }); setTimeout(()=>p.catch(e=>console.log("errors",e)),5000); setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000); setTimeout(()=>p.catch(null),7000); 这将导致多个输出到开发人员控制台。红色错误在时间0处出现,红色在5秒处变为带有文本的黑色errors hello world,然后在6秒钟处出现新的错误消息errors 2 hello world,然后在7秒钟处出现红色错误消息。现在我对一个reject实际被调用多少次感到非常困惑...我迷路了...