先说一下我遇到的问题吧,我之前的一个函数想调用上一个函数的返回值,但是它的返回值一直为空,后来翻了一些资料才明白是异步请求在作怪,不多说,看例子,这是我之前有返回值函数的代码:

  1. function get_no_order_array() {
  2. var order_info = show_order();
  3. var order = [];
  4. $.getJSON("../JSON/customers.json", function (date) {
  5. date["man"].forEach(function (person) {
  6. if (order_info.k_obj[person] == undefined) {
  7. order.push(person);
  8. }
  9. })
  10. });
  11. return order;
  12. }

后来发现打印的数组order 一直为空,以下是改正后的代码:

  1. function get_no_order_array() {
  2. var order_info = show_order();
  3. var order = [];
  4. $.ajaxSettings.async = false;//在执行之前加$.ajaxSettings.async = false;    (同步执行)
  5. $.getJSON("../JSON/customers.json", function (date) {  //<span style="line-height: 1.5;">$.getJSON不懂的话可以看一下我之前的博客,或是专门学习一下    “JSON”</span>
  1. date["man"].forEach(function (person) {
  2. if (order_info.k_obj[person] == undefined) {
  3. order.push(person);
  4. }
  5. })
  6. });
  7. $.ajaxSettings.async = true;//执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行)
  8. return order;
  9. }

在循环之前加一个$.ajaxSettings.async = false;    表示同步执行,这样他就会按照顺序执行了。

同时执行多个$.getJSON() 数据混乱的问题的解决

在执行之前加$.ajaxSettings.async = false;    (同步执行)
执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行)
不然影响别的地方的需要异步执行的代码。

example:

$.ajaxSettings.async = false;

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

......

$.ajaxSettings.async = true;

随机推荐

  1. Android源码剖析之Framwork层后记篇(硬件消息传递、apk管理、输入法框架、编译过程)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 既然写到后记篇,就代表本系列到此为止,暂时告一段落:其他一些Manager随后有时间再补,就像源码的 ...

  2. 记录下 QT Linux 静态编译遇到的坑

    Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...

  3. DevExpress的所有功能介绍

    https://www.devexpress.com/Subscriptions/New-2016-2.xml?utm_source=AnnounceTry&utm_medium=WhatsN ...

  4. 软件工程概论---max单元测试

    题目:一个单元测试,查找list[]中的最大值 编写一个程序对Largest函数进行测试,列举所有测试用例. 思路:首先确保数组不为空,和数组长度不为0,否则输入错误.根据老师所给的函数写一个主函数, ...

  5. undefined reference to `switch_dev_unregister'

    编译内核时,使用默认的配置进行编译.出现错误:undefined reference to switch_dev_unregister',undefined reference toswitch_se ...

  6. eclipse for hello world makefile

    1. 工程文件分析 使用eclipse新建一个Hello World工程,假设工程名称是hello,此时eclipse在工程目录下新建了一个名为hello的文件夹: hello/ .cproject ...

  7. 转帖:解决jquery.js在myeclipse中报错的问题

    转载地址:http://tieba.baidu.com/p/1993753087 从官方下载的jquery.js在myeclipse始终用个大大的红叉,看着很不爽,如何解决呢:jquery.js在my ...

  8. MSP430之ADC采集滤波

    占位符 /* 加权平均滤波 */ ] = {,,,,,,,,,,,,}; ++++++++++++; unsigned ; ; i<ADCN; i++) { temp += arr[i]*coe ...

  9. 添加 Gradle 依赖与 build.gradle 配置初识

    添加 Gradle 我们可以到我们添加 Maven 依赖的网站 Maven Repository: Search/Browse/Explore http://mvnrepository.com/ 上查 ...

  10. C语言:十进制进制转换为其他进制(思想:查表法)

    // //  main.c //  Hex conversion // //  Created by ma c on 15/7/22. //  Copyright (c) 2015年 bjsxt. A ...