`
jindw
  • 浏览: 508837 次
  • 性别: Icon_minigender_1
  • 来自: 初到北京
社区版块
存档分类
最新评论

Ajax的本质之A的优势

阅读更多

先申明一下,我讨厌Ajax这个名词。旧药装新瓶。(像那个80来岁的杨某一样令人讨厌,呵呵)。

正题:

Ajax所谓的异步加载,为何需要异步,可以说异步操作通常都是一个成熟的程序设计人员会尽力回避的东西。复杂度徒增,不好控制,容易出错。

但是,这个问题放在浏览器上就是另外一个情形,浏览器上的脚本+事件通常只有一个线程。那些看是多线程的函数:setTimeout,setInterval,其实都不会插入或中断任何一个其他的在执行中的任务,而且一旦你的脚本尚在运行,那么不管你是否在挂起等待,所有的事件都将阻塞。窗口重画,拖动...也都得靠边站着,感觉就像是某个程序进入一个死循环了。

以前得脚本都是做一些简单得事情,需要得事件,用户基本上都感觉不到,后来XMLHttpRequest的兴起,问题出来了,访问网络资源,你得受网速得限制,如果同步的获取,那你就等吧,等个几秒几分几十分的,不是不可能。这时浏览器可没那么聪明,站旁边傻等,什么窗口重画,移动啊,都装个没听见。

浏览器傻了,用户可不傻,靠,这个网站咋的,吧我的浏览器都搞死了?加入黑名单,或者碰到个脾气好点的,把你辛辛苦苦、没日没夜、绵绵数月敲下来的脚本,一律禁止运行... 傻了把,可怜的脚本程序员。

看似浏览器的问题嘛,可是,谁叫你是中年诸葛亮呢,扶不起的阿斗你也得背着,朽木上xx方显你的出众嘛。于是异步操作遍地开花,第N次世界大乱从此开始。

确实这里使用异步操作很有见成效,先告诉xmlhttp后台加载网络资源。一边凉快凉快,加载完了通知一下。喝喝茶,看看报,N+1秒钟过去了,报告: 001.xml全体元素集合完毕,帐前待命...,ok,..... (机密,隐藏...)。

不错把,你不必焦急的盯着屏幕上所不期望的白大块,不用使劲的失望的拖动着没有的鼠标。你只需要东瞧瞧西瞅瞅,随意的打发点时间,一会,东西准备好了,归你了,爱怎么办就怎么办吧。

没看明白?简单点说吧,就是把资源加载这一操作放在脚本线程之外,那么就不会有长时间运行的脚本,那么用户就觉得你的程序响应快。就是是说ajax,其实asynchronism也就这一个地方而已。

记住一点,浏览器上单纯的脚本程序,本身是不支持多线程的,异步也就无从谈起,而现在所说的异步,都不是纯粹的ECMAScript,都是利用浏览器带有的某些原生对象实现的。

雕虫小技而已,结果吹得鸡毛满天飞。众嘴纭纭之势,众目睽睽之下,公鸡下蛋,鲤鱼上坡,皆有可能。

分享到:
评论
2 楼 jindw 2007-02-26  
chpn 写道
申明一下我不讨厌Ajax这个名词,但很少用Ajax这名词,我讨厌别人动不动就Ajax。

哈哈,楼上的说得有意思。
非常同意jindw的观点

jindw好像是打算把你的那个框架做成支持异步加载类脚本的。
$import.ca............



呵呵,谢谢chpn的建议。
现在还在为1。1忙碌着,1。2还只是计划。
既然你说的这里,我就把计划中的想法说一下。

1.扩展$import函数,增加callback参数,在装载成功后执行。
<script>
function callback(yourFunction){
  youFunction();
}
$import('com.yourcampany.yourFunction',null,youFunction);
</script>

2.增加java.util.ImportManager类。
<script>
$import('js.util.ImportManager');
new ImportManager(['com.yourcampany.Class1','com.mycampany.*']).prepare();
</script>

该方法将用打印预装脚本的方式缓存需导入脚本及其依赖,能后再执行导入操作。其实也是同步,只不过没有事件阻塞的情况。

此外还可以增加一个任务调度的类,在那里可做更加细致的工作,比如让窗口变灰。


这些这是暂时的想法。
1 楼 chpn 2007-02-26  
申明一下我不讨厌Ajax这个名词,但很少用Ajax这名词,我讨厌别人动不动就Ajax。

哈哈,楼上的说得有意思。
非常同意jindw的观点

jindw好像是打算把你的那个框架做成支持异步加载类脚本的。
$import.call("new chpn.Test" , /*Array*/ args);
$import.call("chpn.Test.test()",/*Array*/ args);
$import.call("chpn.Test.test()",/*Array*/ args,/*function*/ onReady , /*function*/ onLoading);

$import.call call 方法为重载过的方法。已经不是Function.prototype.call

当调用$import.call时,检查chpn.Test是否已经加载,如果已经加载就立即执行参数1.  chpn.Test.test(参数2).call(chpn.Test)

如果正在加载,则等待。
如果未加载,则发出请求,等待脚本完本加载,就执行数1

参数四 onloading,可以用来实现阻塞用户的操作,比如用一个层使窗口变暗。

这种方法很多情况下都可用

相关推荐

    Ajax Ajax本质 Ajax本质源码

    在描述中提到的"Ajax本质源码"可能指的是实现上述流程的具体JavaScript代码。例如,`ajaxCall.aspx`和`ajaxCall.aspx.cs`可能是服务器端处理Ajax请求的代码,而`Default.aspx`和`Default.aspx.cs`可能是客户端页面和...

    Ajax本质 +源代码

    在“Ajax本质 +源代码”这个主题中,我们将深入探讨Ajax的工作原理以及如何在实际应用中使用它。首先,Ajax的核心机制是利用XMLHttpRequest对象创建一个到服务器的异步连接。当用户触发某个事件(如点击按钮),...

    AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX

    AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX

    Ajax中文手册 API

    很不错的Ajax开发草考文档,方便快捷1. AJAX介绍AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受数据的技术。2. AJAX实例AJAX可以用来创建更多交互式的网络应用程序。3. AJAX源...

    Pragmatic Ajax - A Web 2.0 Primer

    《Pragmatic Ajax - A Web 2.0 Primer》是一本深入探讨Web 2.0核心技术之一Ajax(Asynchronous JavaScript and XML)的指南。Ajax是21世纪初互联网技术的一次重大飞跃,它使得网页无需刷新即可实现数据的动态更新,...

    ajax本质源码javascript xml

    ajax本质源码 AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 主要包含了以下几种技术 Ajax的定义 基于web标准XHTML+CSS的表示; 使用 DOM...

    ajax请求之返回数据的顺序问题分析

    本文实例分析了ajax请求之返回数据的顺序问题。分享给大家供大家参考,具体如下: ajax请求一个url,php后端处理后,数组为如下格式: 代码如下:$a = array( ‘-1’=&gt; 10 ,’-3′ =&gt; 2, ‘0’ =&gt; ‘5’ ,’-2′ =&gt; ...

    四天学会ajax_ajax教程.pdf

    Ajax的主要优势在于提高了Web应用的性能和用户体验,减少了网络延迟,使得用户几乎感觉不到等待。这种技术被广泛应用于各种Web应用,如谷歌地图、Gmail、Facebook等,提供了流畅的滚动、实时搜索建议和即时反馈等...

    ajax树 ajax tree

    总的来说,Ajax树结合了Ajax、JavaScript和J2EE的优势,为用户提供了一个高效、动态且交互性强的树状视图,广泛应用于各种需要展现层级结构的场景。理解和掌握Ajax树的实现原理与技巧,对提升Web应用的用户体验具有...

    利Android AQuery中ajax访问SSH搭建的后台Java Web服务器

    本文将深入探讨如何利用Android的AQuery库结合Ajax技术来访问由SSH搭建的后台Java Web服务器,从而实现数据的动态获取和提交。 首先,我们需要了解AQuery。AQuery是Android平台上的一个强大的图片加载和网络请求库...

    Modelling and Generating Ajax Applications A Model-Driven Approach

    ### Modelling and Generating AJAX Applications: A Model-Driven Approach #### Introduction AJAX (Asynchronous JavaScript and XML) represents a significant shift in the way interactive web applications...

    ajax demo ajax实例

    10. **局部刷新**:Ajax的主要优势是局部刷新,例如,用户触发一个操作,仅更新页面的某个部分,而不是整个页面。 在"ajaxtheme"这个压缩包中,可能包含了一个演示如何使用Ajax改变网页主题的示例。这可能涉及到...

    asp+ajax.rar_ajax_ajax a_ajax asp_asp aja_asp+ajax

    【ASP + AJAX 留言板技术详解】 在IT领域,ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,它允许开发者创建动态交互式的网页。而AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个...

    ajax代码 ajax代码

    **Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这种技术可以提升用户体验,因为它...

    Pragmatic Ajax A Web2.0 Primer(国外经典)

    《Pragmatic Ajax A Web2.0 Primer》是一本深入探讨Web 2.0核心技术——Ajax(异步JavaScript和XML)的国外经典著作。这本书旨在帮助开发者理解如何利用Ajax技术构建更高效、更具交互性的Web应用程序。Ajax的核心...

    采用AJAX技术 AJAX技术概要

    AJAX的一大优势在于提高了用户体验,因为它可以在不刷新整个页面的情况下更新内容。这种响应式的设计让用户感觉更加流畅,减少了等待时间,也避免了不必要的网络数据传输。例如,Microsoft的Outlook Web Access就是...

    Building.a.Web.Site.with.Ajax

    标题“Building.a.Web.Site.with.Ajax”暗示了这个主题是关于使用Ajax技术构建Web站点的。Ajax(异步JavaScript和XML)是一种在不重新加载整个网页的情况下更新部分网页的技术,提高了用户体验,使得交互更加流畅。 ...

    AjaxJson 实例 AjaxJson

    AjaxJson 是一种在 Web 应用程序中实现异步数据交换的技术,它结合了 AJAX(Asynchronous JavaScript and XML)和 JSON(JavaScript Object Notation)的优势,使得网页可以在不刷新整个页面的情况下与服务器进行...

    AjaxRequest(Ajax使用包)

    **AjaxRequest(Ajax使用包)** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AjaxRequest是实现Ajax功能的一个工具包,它...

Global site tag (gtag.js) - Google Analytics