高频js-----js执行机制 Event Loop
2023-12-14 07:32:17
修改代码,让代码每隔1秒输出1-5
for (var i = 0; i < 5;i++) {
setTimeout(() => {
console.log(i)
}, 1000)
}
首先我们需要了解js的执行机制 (Event Loop)
js是单线层,如果现在执行上面代码的话 会输出 5个5
这里不明白的同学可以去看一下我以前发布的关于EventLoop的文章
这是因为在 JavaScript 中,setTimeout 函数是一个异步函数,它会在指定的时间间隔后执行回调函数。在这段代码中,循环会立即执行,并且在每个迭代中都会调用 setTimeout 函数来创建一个定时器。但是,由于 setTimeout 是异步执行的,循环会继续执行而不会等待定时器的回调函数执行。
下面附上修改后的代码
使用async 和await 进行异步处理
?test
?函数中使用了?await
?关键字来等待?myPromise
?函数返回的 Promise 对象。await
?关键字会暂停函数的执行,直到 Promise 对象被解析(resolved)为止 然后每隔1秒打印一个数字
function myPromise(num){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(num)
}, 1000)
})
}
async function test() {
for (var i = 0; i < 5;) {
i++;
console.log(await myPromise(i))
}
}
test();
文章来源:https://blog.csdn.net/dujintao1/article/details/134973691
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!