首页 > 编程语言 > 详细

JavaScript中的异步与单线程

时间:2021-05-07 00:12:09      阅读:20      评论:0      收藏:0      [点我收藏+]

一、同步与异步有何不同:

1.JavaScript是单线程的语言

2.异步不会阻塞代码执行

3.同步会阻塞代码执行

 

二、异步的应用场景:需要等待的情况

1.网络请求,如ajax图片加载

2.定时任务,如setTimeout

 

三、promise的基本使用:

1.通过串行的方式解决了回调地狱的问题

2.手写promise加载图片:

function loadImg(src) {
    const p = new Promise(
        (resolve, reject) => {
            const img = document.createElement(‘img‘)
            img.onload = () => {
                resolve(img)
            }
            img.onerror = () => {
                const err = new Error(`图片加载失败 ${src}`)
                reject(err)
            }
            img.src = src
        }
    )
    return p
}

const url1 = ‘https://img.mukewang.com/5a9fc8070001a82402060220-140-140.jpg‘
const url2 = ‘https://img3.mukewang.com/5a9fc8070001a82402060220-100-100.jpg‘

loadImg(url1).then(img1 => {
    console.log(img1.width)
    return img1 // 普通对象
}).then(img1 => {
    console.log(img1.height)
    return loadImg(url2) // promise 实例
}).then(img2 => {
    console.log(img2.width)
    return img2
}).then(img2 => {
    console.log(img2.height)
}).catch(ex => console.error(ex))

 

JavaScript中的异步与单线程

原文:https://www.cnblogs.com/starlog/p/14736446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!