美文网首页简友广场
踩过的坑--ajax异步调用

踩过的坑--ajax异步调用

作者: 迷夏湖 | 来源:发表于2020-05-18 21:14 被阅读0次

ajax在js中经常会用到,最近就遇到个很奇怪的问题,获取的值用控制台打印出来总是不符合预期,由于数据很多,逻辑很复杂,跟踪了很久才找到原因,其实也很简单,就是异步调用顺序问题。

将问题简化下,就是一个函数A调用函数B,函数B通过ajax查后台数据,然后返回数据。由于异步调用的特性,其实很容易踩这个坑,在数据返回前,函数B造就返回了。看下下面这个例子就很容易明白了。

function testFunc() {
    alert("调用函数前...");
    var data = getDataFunc();
    alert("调用函数后...");
}
function getDataFunc() {
        $.ajax({
        //async:false,
        url: yourUrl,
        data:{
        },
        success:function(result){
            alert("函数中ajax调用返回数据..."); 
            data = result;
        }
        alert("函数返回...");
        return data;
}

ajax默认为异步执行, 上面的例子中调用testFunc时, alert弹出依次为:调用函数前-->函数返回-->调用函数后-->函数中ajax调用返回数据, 这时数据会紊乱,达不到预期效果。

如果将async设置为false,即以非异步方式执行,那么alert弹出依次为: 调用函数前-->函数中ajax调用返回数据-->函数返回-->调用函数后。 这是符合预期的。
如果不清楚这个,很容易就掉到这个坑里。

相关文章

  • 踩过的坑--ajax异步调用

    ajax在js中经常会用到,最近就遇到个很奇怪的问题,获取的值用控制台打印出来总是不符合预期,由于数据很多,逻辑很...

  • ajax遇到的坑

    调用ajax无反应,在调用函数ajax函数上面加alert()弹出后,正常调用 ajax默认异步的,不会挂起ale...

  • Ajax 异步return undefined 踩坑

    由于之前开发都会用其他前端框架自带的remote方法,并且对ajax等前端内容涉及面也少,才尝此果。 需求:需要在...

  • 04Vue的前后端交互

    Vue的前后端交互 Promise用法 异步调用 触发异步调用的方式定时任务Ajax事件函数 多次异步调用的依赖分...

  • vue学习4

    接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 JavaScript的执行环...

  • Vue接口调用方式

    接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 JavaScript的执行环...

  • 前后分离模型之封装 Api 调用

    Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事...

  • jQuery之deferred优雅的异步处理方式

    本例基于jquery1.9.1 示例1:多ajax链式调用 示例2:多ajax异步调用,等待结果 Deferred...

  • 2019-10-23 vue使用微信js-sdk转发

    1 自己所踩过的坑转发的函数需要在mounted中直接调用(即页面完成时直接调用)

  • 前端学习笔记二十六-Vue之前后端交互

    一、前后端交互模式 接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 Java...

网友评论

    本文标题:踩过的坑--ajax异步调用

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