网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

当心异步刷新后的脚本文件加载

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
。我同意这一点。JavaScript的编程模型的确没有多线程的机制,它是线程的——从理论上来说的确是这样。
  
    但是,使用JavaScript进行编程还是会遇到同步问题,因为有些操作是异步得,尤其是在我们作一些DOM操作时。在AJAX编程中最著名的异步操作自然就是XMLHttpRequest对象的send方法。当我们调用了send方法之后,下面的代码并不会被阻塞,而是会继续执行下去。我们还会遇到别的异步操作。例如,开发人员经常会发现,他们无法在页面中动态创建了图片(<img />)或者添加了脚本文件引用(<script />)之后立即获得图片得尺寸或者执行文件中定义的方法,这是因为图片和加载脚本文件都是异步操作。在大多数情况下,异步操作无法立即生效,它往往会使用一些类似于回调函数的机制来通知开发人员事情已经准备好了。
  
    我们不难理解异步操作可能会带来同步性方面的问题。我画了一幅示意图来展示异步刷新机制中可能存在的同步和异步操作。请注意,在ASP.NET AJAX的设计中,PageRequestManager使用了标准的Singleton模式,因此在整个页面中只存在一个PRM实例。这看起来还真是一个同步问题的温床。
   /P>



  这并不是一幅客户端生命周期的示意图。因为我要指出问题是如何实现的,因此需要表现的是异步刷新过程中的一些细节。 请注意图中橙色的箭头,它代表了异步操作中的等待实现,它们是唯一可能造成同步问题的地方。过程中其余部分不会被中断,这是语言特性决定的。
  
    图中深蓝色的三个部分导致了同步问题的发生。如果我说,这些部分的本意是为了避免问题的发生,您是否会觉得惊讶呢?让我们通过分析相关实现来看一下这三个关键步骤是如何工作的:

  实现
  function Sys$WebForms$PageRequestManager 当心异步刷新后的脚本文件加载_网学
当前位置: 网学 > 编程文档 > ASP.net > 正文

当心异步刷新后的脚本文件加载

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
onFormSubmit(evt)
  {
   //
  
   // prepare the request object
   var request = new Sys.WebRequest();
   //
  
   // initialize request
   var handler = this._get_eventHandlerList().getHandler("initializeRequest");
   //
  
   // Step 1 - 1: abort the existing async postback
   this.abortPostBack();
   // Step 1 - 3: replace the request object
   this._request = request;
  
   // invoke the request
   request.invoke();
   //
  }
  
  function Sys$WebForms$PageRequestManager$abortPostBack()
  {
   if (!this._processingRequest && this._request)
   {
   this._request.get_executor().abort();
   // Step 1 - 2: clear the request object
   this._request = null;
   }
  }
  
  function Sys$WebForms$PageRequestManager 当心异步刷新后的脚本文件加载_网学
当前位置: 网学 > 编程文档 > ASP.net > 正文

当心异步刷新后的脚本文件加载

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
onFormSubmitCompleted(sender, eventArgs)
  {
   this._processingRequest = true;
  
   //
  
   // Step 2: validate the request
   if (!this._request || sender.get_webRequest() !== this._request)
   {
   return;
   }
  
   //
  
   // execute and load scripts
   scriptLoader.loadScripts(0, Function.createDelegate(this, this._scriptsLoadComplete), null, null);
  }
  
  function Sys$WebForms$PageRequestManager 当心异步刷新后的脚本文件加载_网学
当前位置: 网学 > 编程文档 > ASP.net > 正文

当心异步刷新后的脚本文件加载

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
scriptsLoadComplete()
  {
   //
  
   // Page loaded
   this._pageLoaded(false);
  
   // Step 3 - 1: end postback
   this._endPostBack(null, this._response);
  
   //
  }
  
  function Sys$WebForms$PageRequestManager 当心异步刷新后的脚本文件加载_网学
当前位置: 网学 > 编程文档 > ASP.net > 正文

当心异步刷新后的脚本文件加载

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
endPostBack(error, response)
  {
   this._processingRequest = false;
  
   // Step 3 - 2: clear the request
   this._request = null;
  
   //
  } 


&

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号