ajax异步回调函数中给外部变量赋值的问题探讨
<!doctype html>
<head>
<meta charset="utf-8">
</head>
<body>
<script src="http://localhost/UIBMSPHPProj/public/js/jquery-1.8.2.min.js"></script>
<script>
$(function(){
var str = "aaa";
$.post("http://localhost/UIBMSPHPProj/index.php/Index/abc",{},function(data){
//data = "bbb";
console.log(str);//aaa
str = data;
console.log(str);//"bbb"
});
console.log(str);//"aaa"
});
</script>
</body>
</html>
ajax回调函数异步的原因导致了在外部直接获取str的值时还是“aaa”,需要用“bbb”时,可以将用"bbb"的函数放入回调函数中调用。
相关推荐
-
jQuery的promise与deferred对象在异步回调中的作用
一.前言 为了让前端们从回调的地狱中回到天堂, jQuery 也引入了 Promise 的概念. Promise 是一种令代码异步行为更加优雅的抽象,有了它,我们就可以像写同步代码一样去写异步代码. jQuery 从1.5版本开始实现了 CommonJS Promise/A 规范这一重量级方案,不过没有严格按照规范进行实现,有一些API上的差异. 好,让我们来看看他们的特性吧( 本文示例基于jquery 1.8版本以上 ). 二.示例 以前写动画时,我们通常是这么干的: $('.animateE
-
JavaScript异步回调的Promise模式封装实例
网页的交互越来越复杂,JavaScript 的异步操作也随之越来越多.如常见的 ajax 请求,需要在请求完成时响应操作,请求通常是异步的,请求的过程中用户还能进行其他的操作,不会对页面进行阻塞,这种异步的交互效果对用户来说是挺有友好的.但是对于开发者来说,要大量处理这种操作,就很不友好了.异步请求完成的操作必须预先定义在回调函数中,等到请求完成就必须调用这个函数.这种非线性的异步编程方式会让开发者很不适应,同时也带来了诸多的不便,增加了代码的耦合度和复杂性,代码的组织上也会很不优雅,大大降低了
-
C#中异步回调函数用法实例
本文实例讲述了C#中异步回调函数用法.分享给大家供大家参考.具体如下: static void Main(string[] args) { Func<string,string> showMessage = ShowMessage; //设置了回调函数Completed,不能有返回值 IAsyncResult result = showMessage.BeginInvoke("测试异步委托",new AsyncCallback(Completed),null); //半段异
-
使用Promise链式调用解决多个异步回调的问题
介绍 所谓Promise,简单来说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. 缺少场景支撑,对于新手而言,很难理解Promise的意义. 在<你不知道的JavaScript中>有个场景介绍得很形象: 我走到快餐店的柜台,点了一个芝士汉堡.我交给收银员1.47美元.通过下订单并付款,我已经发出了一个对某个值(就是那个汉堡)的请求.我已经启 动了一次交易. 但是,通常我不能马上就得到这个汉堡.收银员会交给我某个东西来代替汉堡:一张带有 订单号的收据.订单号就是一个
-
Nodejs异步回调的优雅处理方法
前言 Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用.在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O的操作结果基本上都需要在回调函数中处理,比如下面的这个读取文件内容的函数: 复制代码 代码如下: fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); }); 那,我们
-
jquery Deferred 快速解决异步回调的问题
jquery Deferred 快速解决异步回调的问题 function ok(name){ var dfd = new $.Deferred(); callback:func(){ return dfd.resolve( response ); } return dfd.promise(); } $.when(ok(1),ok(2)).then(function(resp1,resp2){}) //相关API 分成3类 1类:$.when(pro1,pro1) 将多个 promise 对象以a
-
IP查询系统的异步回调案例
话不多说,请看代码: package com.lxj.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; public class Http extends Thread{ // 下载结束的回调接口 public interface
-
Android异步回调中的UI同步性问题分析
Android程序编码过程中,回调无处不在.从最常见的Activity生命周期回调开始,到BroadcastReceiver.Service以及Sqlite等.Activity.BroadcastReceiver和Service这些基本组件的回调路径和过程也就是通常意义上所谓的"生命周期".同时,在处理具体的业务逻辑时,常常设计到不同线程之间的通信,如下载图片完成后通知 UI线程更新UI,凡此类场景,无论使用哪一种具体的线程间通信方式(Handler/Message.Handler/p
-
C# 委托的三种调用示例(同步调用 异步调用 异步回调)
首先,通过代码定义一个委托和下面三个示例将要调用的方法: 复制代码 代码如下: public delegate int AddHandler(int a,int b); public class 加法类 { public static int Add(int a, int b) { Console.WriteLine("开始计算:" + a + "+" + b); Thread.Sl
-
python实现异步回调机制代码分享
1 将下面代码拷贝到一个文件,命名为asyncore.py 复制代码 代码如下: import socketimport selectimport sys def ds_asyncore(addr,callback,timeout=5): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(addr) r,w,e = select.select([s],[],[],timeout) if r:
-
跨平台python异步回调机制实现和使用方法
1 将下面代码拷贝到一个文件,命名为asyncore.py 复制代码 代码如下: import socketimport selectimport sys def ds_asyncore(addr,callback,timeout=5): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(addr) r,w,e = select.select([s],[],[],timeout) if r:
随机推荐
- 用XML和XSL来生成动态页面
- 一个挺有意思的Javascript小问题说明
- Java刷视频浏览量点赞量的实现代码
- 详解如何在Linux(CentOS 7)命令行模式安装VMware Tools
- 跟老齐学Python之玩转字符串(1)
- MySQL中LIKE子句相关使用的学习教程
- Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
- python2.7的编码问题与解决方法
- PowerShell中调用外部程序和进程操作命令例子
- 用vbs检测Internet Explorer 中是否启用了 ActiveX
- php XMLWriter类的简单示例代码(RSS输出)
- 预加载css或javascript的js代码
- 浅析用prototype定义自己的方法
- 服务器远程连接提示由于协议错误,客户端无法连接到远程计算机
- Centos6.5 ssh配置与使用教程
- php array_merge函数使用需要注意的一个问题
- PHP表单数据写入MySQL数据库的代码
- android 使用uinput模拟输入设备的方法
- Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
- 另类扩展名同样执行ASP