zoukankan      html  css  js  c++  java
  • js异步编程

    异步编程 asynchronous

    基本概念

    阻塞与非阻塞

    阻塞:上一个操作正在处理,程序在等待过程中,无法进行别的操作

    非阻塞:上一个操作正在处理,程序在等待过程中,可以进行别的操作

    同步与异步

    同步:上一步操作正在处理,程序不知道上一步操作状态(是否完成),程序需要主动去询问状态

    异步:上一步操作正在处理,当上一步操作完成后,程序会被通知状态完成

    差别与联系

    阻塞非阻塞:上一步操作处理中(等待过程中),是否可以进行其他操作

    同步异步:上一步操作结果(完成状态),是否主动通知

    Javascript是单线程的,所以对于一些大数据量的同步操作,可能会阻塞线程,同步≈阻塞

    承诺 Promise

    promise: 异步操作的最终完成(或失败)及其结果值

    const failTime = Number.parseInt(input.value)
    const promise = new Promise(function(resolve, reject) {
        pElem.textContent = '加载中...';
        document.body.appendChild(pElem);
        setTimeout(() => {
            resolve('加载成功!')
        }, 4 * 1000)
        setTimeout(() => {
            reject('加载失败!')
        }, failTime * 1000)
    })
    
    promise.then(data => {
        pElem.textContent = data;
        console.log(promise) // Promise {<resolved>: "加载完成"}
    })
        .catch(e => {
        pElem.textContent = e;
        console.log(promise) // Promise {<rejected>: "加载失败"}
    })
        .finally(()=>{
        pElem2.textContent = '完成加载,开始处理。'
        document.body.appendChild(pElem2)
    })
    
    console.log(promise) // Promise {<pending>}
    


    • 创建时间:20210812-4 09:39
    • 更新时间:20210831-2 23:26
    • 版权作者:贝可考拉
    • 当前版本:v1.0
    • 标签分类: #编程开发 #javascript #js #异步
  • 相关阅读:
    线程锁lock&rlock
    threading.local
    threading Event
    python中的eval 和 exec 和 execfile
    cloud-init 常见问题
    systemd
    cloud-init 的命令行
    原生js实现Promise
    js 指定位置插入html标签(可编辑div)
    js 实现复制粘贴文本过滤(保留文字和图片)
  • 原文地址:https://www.cnblogs.com/koalamini/p/15697357.html
Copyright © 2011-2022 走看看