美文网首页
同步与异步

同步与异步

作者: WhiteStruggle | 来源:发表于2020-08-21 07:52 被阅读0次

异步:同时进行多个操作,用户体验好,但代码混乱

//麻烦,降低代码质量

ajax("",function data1(){

    ajax("",function data2(){
    
        ajax("",function data3(){
        
        },function(err){
        
        })
    },function(err){
    
    })
},function(err){

})

同步:一次只能进行一个操作,用户体验不好,但是代码清晰

let data1 = ajax("")
let data2 = ajax("")
let data3 = ajax("")

Promise

Promise封装

<!-- 1.txt -->
{"a":"15","b":"58"}
let data = new Promise(function(resolve,reject){
    //异步 ·····
    //resolve  —— 成功
    //resolve —— 失败
    $.ajax({
        url:"1.txt",
        dataType:'json',
        success(res){
          resolve(res);
        },
        error(err){
          reject(err);
        }
     })
})

引入 then

data.then( function(arr){
        console.log(arr) //{a: "15", b: "58"}
    } , function(err){
        console.log(err);
    } );

jquery 中的 $.ajax

<!-- 1.txt -->
{"a":"15","b":"58"}
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script>
      let result = $.ajax({
        url:"1.txt",
        dataType:'json'
      }).then(res=>{
        console.log(res);//{"a":"15","b":"58"}
      },err=>{
        console.log(err);
      })
      console.log(result);//jQuery的$.ajax,返回一个promise对象
    </script>

Promise.all

格式:

Promise.all([
    ····
]).then( 
    function(res){
        // 成功时执行 
    },function(err){
        //失败时执行
})

当执行多条ajax数据,成功获取的数据会保存在res数组中,可以使用解构赋值将数据分离

<!-- 1.txt -->
{"a":"15","b":"58"}
<!-- 2.txt -->
[1,5,96]
    <script>
      Promise.all([
        $.ajax({url:"1.txt",dataType:'json'}),
        $.ajax({url:"2.txt",dataType:'json'})
      ]).then(res=>{
        console.log(res);//(2)[{…}, Array(3)]
      },err=>{
        console.log(err);
      })
    </script>

使用解构赋值,将获取的数据进行分割赋值

      Promise.all([
        $.ajax({url:"1.txt",dataType:'json'}),
        $.ajax({url:"2.txt",dataType:'json'})
      ]).then(([data1,data2])=>{
        console.log(data1);//{a: "15", b: "58"}
        console.log(data2);//(3)[1, 5, 96]
      },err=>{
        console.log(err);
      })

async/await

异步的操作,同步的写法

使用:

async function show(){
  xxxx;
  xxxx;
  let data = await $.ajax(); 
  xxx;
}
show()

普通函数 —— 一直执行,直到结束

async函数 —— 可以暂停执行

async函数 以await为切割线,将函数分割开来,达到暂停函数的效果

捕获异常使用try catch

try{
    
}catch(e){
    
}

相关文章

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 简单理解异步,非阻塞和 IO 复用

    1.1 同步与异步 同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。同步: 当一个...

  • clk分类与介绍

    1、同步电路与异步电路 首先来谈谈同步电路与异步电路。那么首先就要知道什么是同步电路、什么是异步电路? 对于同步时...

  • 高并发原理研究和探索

    详细了解同步与异步,阻塞与非阻塞。 1、同步与异步 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。...

  • NIO基础之同步、异步、阻塞、非阻塞

    这里区分几个概念,也是常见但是容易混淆的概念,就是标题中的同步、异步、阻塞、非阻塞。 一、同步与异步 同步与异步,...

  • 多线程处理(问题使用方法)

    一、同步与异步、串行与并发: 首先我们要明白:什么是同步、异步?什么是并发、串行?同步、异步是提交任务的一种方式,...

  • 侃侃高并发的实现原理

    为了更加形象的说明同步异步、阻塞非阻塞,我们以实物买奶茶来说明为例。 并发处理的前身 一:同步与异步 ①同步与异步...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • 异步编程

    同步与异步 同步:按代码顺序依次执行 异步:先执行同步代码,完成后再执行异步代码 事件循环与消息队列:当代码执行到...

  • 同步、异步、阻塞与非阻塞

    同步与异步 首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来...

网友评论

      本文标题:同步与异步

      本文链接:https://www.haomeiwen.com/subject/bjiyjktx.html