我在理解 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实际调用了多少次感到非常困惑......我迷路了......
慕虎7371278
相关分类