-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第172题:JS 异步笔试题,请写出下面代码的运行结果(哔哩哔哩) #471
Comments
console.log(1, new Date() - date); 当前宏任务 -> 微任务 -> 下一个宏任务。 Promise.resolve().then(console.log(3, new Date() - date)) 这行有个坑,差点被骗了 |
var date = new Date() 如有不对,多多指教~ |
一眼扫过去,还是被Promise.resolve().then(console.log(3, new Date() - date))骗了 |
执行结果: 1 3 4 2。 |
var date = new Date()
console.log(1, new Date() - date)
setTimeout(() => {
console.log(2, new Date() - date)
}, 500)
Promise.resolve().then(console.log(3, new Date() - date))
while(new Date() - date < 1000) {}
console.log(4, new Date() - date) 求上面的输出顺序和输出值,为什么? 答案: 1 0
3 1
4 1000
2 1000 其中,关于时间差结果可能因为计算机性能造成的微小差异,可忽略不计 你答对了吗?下面我们由浅入深探索本题 由浅入深探索 Promise 异步执行首先,看一下
微任务包括: 宏任务包括: 注意: 下面的题目都是执行在浏览器环境下 遇到不好理解的,可结合 1. 同步 + Promise题目一:var promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})
promise.then(()=>{
console.log(3)
})
console.log(4)
// 1
// 2
// 4
// 3 解析:
题目二:var promise = new Promise((resolve, reject) => {
console.log(1)
})
promise.then(()=>{
console.log(2)
})
console.log(3)
// 1
// 3 解析:
题目三:var promise = new Promise((resolve, reject) => {
console.log(1)
})
promise.then(console.log(2))
console.log(3)
// 1
// 2
// 3 解析:
题目四:Promise.resolve(1)
.then(2)
.then(Promise.resolve(3))
.then(console.log)
// 1 解析:
题目五:var promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
reject()
})
promise.then(()=>{
console.log(2)
}).catch(()=>{
console.log(3)
})
console.log(4)
// 1
// 4
// 2 解析:
题目六:Promise.resolve(1)
.then(res => {
console.log(res);
return 2;
})
.catch(err => {
return 3;
})
.then(res => {
console.log(res);
});
// 1
// 2 解析:
2. 同步 + Promise + setTimeout题目一:setTimeout(() => {
console.log(1)
})
Promise.resolve().then(() => {
console.log(2)
})
console.log(3)
// 3
// 2
// 1 解析:
题目二:var promise = new Promise((resolve, reject) => {
console.log(1)
setTimeout(() => {
console.log(2)
resolve()
}, 1000)
})
promise.then(() => {
console.log(3)
})
promise.then(() => {
console.log(4)
})
console.log(5)
// 1
// 5
// 2
// 3
// 4 解析:
回到开头现在看,本题就很简单了 var date = new Date()
console.log(1, new Date() - date)
setTimeout(() => {
console.log(2, new Date() - date)
}, 500)
Promise.resolve().then(console.log(3, new Date() - date))
while(new Date() - date < 1000) {}
console.log(4, new Date() - date) 解析:
总结
|
这道题 考察的 两个地方
|
求上面的输出顺序和输出值,为什么
The text was updated successfully, but these errors were encountered: