• 同步和异步


    一、同步和异步

    1、同步
    同步是一条直线上的队列,调用者和被调用者串行执行,同步需要等待返回结果才能继续。

    一个任务连续执行。

    2、异步
    异步不是一条直线上的队列,各走各的。调用者与被调用者并行执行,异步不必等待,一般需要监听异步的结果。

    一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。

    二、同步调用,异步调用,回调

    同步调用是一种阻塞式调用,必须等待上一个任务完成,这样容易浪费系统资源;
    异步调用是一种类似消息或事件的机制,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方;
    var pf = function (num) {
        console.log('print: ',num);
    };
    pf(1111);
    setTimeout(function () {
        pf(2222);
    }, 2000);
    pf(3333);
    // -----结果-----
    // print:  1111
    // print:  3333
    // print:  2222
    回调是一种双向调用,被调用方在接口被调用时也会调用对方的接口。在等待某一件事情完成之后,再运行一个函数,回调可以弥补异步函数的缺点,能够让异步函数同步执行
    var data = [];
    setTimeout(function (){
        data.push(1);
    },2000);
    console.log(data[0]);
    // 结果
    // undefined
    var data = [];
    var cb = function(){
        console.log(data[0]);
    };
    var pushData =  function(callback){
        data.push(1);
        callback();
    };
    setTimeout(function () {
        pushData(cb);
    },2000);
  • 相关阅读:
    用js onselectstart事件鼠标禁止选中文字
    模仿苹果菜单的导航
    返回页面顶部
    商品展示的放大镜效果
    键盘控制Div的移动
    Div跟随鼠标移动
    瀑布流的布局(功能还没有完善)
    类似时光轴的效果
    ie6-ie8中不支持opacity透明度的解决方法
    :active pseudo-class doesn't work in mobile safari
  • 原文地址:https://www.cnblogs.com/camille666/p/sys_ays.html
Copyright © 2020-2023  润新知