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 #异步
posted @ 2021-12-16 12:40  贝可考拉  阅读(50)  评论(0编辑  收藏  举报