`

prototype_同步请求和回调函数

 
阅读更多
/*************** prototype 同步请求  ********************/
var Transfer={}
Transfer.Base = function() {}
Transfer.Base.prototype = {
  setOptions: function(options) {
    if(typeof options!="object"){options={};}
    this.options = {
        bCache:options.bCache||false,
        id:options.id||"scriptTemp",
        onfailure:options.onfailure||function(){},
        oncomplate:options.oncomplate||function(){}
    }
  }
}
var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}
Object.extend = function(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

/**
new Transfer.Request(url,{oncomplate:'',id:''})
*/
Transfer.Request=Class.create();
Transfer.Request.prototype=Object.extend(new Transfer.Base(),{
    initialize: function(url, options) {
    this.setOptions(options);
    this.request(url);
    },
    request:function(url){
        this.url=url;
        this.bCache=this.options.bCache;
        this.id=this.options.id;
        this.oncomplate=this.options.oncomplate;
        this.onfailure=this.options.onfailure;
        this.symbol="?";
        if(this.url.indexOf("?")!="-1")this.symbol="&";
        var head=document.getElementsByTagName("head")[0];
        var sT = document.getElementById(this.id);
        if(sT&&sT.src&&sT.src==this.url){
            this.oncomplate();
            return;
        }
        if (sT) {sT.parentNode.removeChild(sT);}
        var s = document.createElement("script");
        head.appendChild(s);
        s.setAttribute("language", "javascript");
    s.setAttribute("type", "text/javascript");
    s.setAttribute("id", this.id);
    s.setAttribute("src", (this.bCache && this.bCache == true) ? this.url + this.symbol + Math.random() : this.url);
        var self=this;
        s.onload=s.onreadystatechange=function()
        {
            if (typeof ActiveXObject!="undefined") {
                if(s.readyState&&s.readyState=="loaded")self.oncomplate();
                if(s.readyState&&s.readyState=="complete")return;
            }else{
                self.oncomplate();
            }
        }
        s.onerror=function(){ //ie not work
            s.parentNode.removeChild(s);
            self.onfailure();
            throw new Error("some error occurd,please try again later");
        }
     }
});
/********************************************/

调用方法:
new Transfer.Request("./decode.jsp?timestamp="+new Date().getTime()+""+parseInt(Math.random()*1000),{oncomplate:getLatlonCallback,id:'getLatlonCallback',bCache:true});

传入参数的方法:
new Transfer.Request(url,{oncomplate:function(){getAreaList(city[0]);},id:"areabycity_1",bCache:true});

 

 

分享到:
评论

相关推荐

    详解XMLHttpRequest(一)同步请求和异步请求

    当请求完成并成功时,回调函数会被调用,传递响应文本和任何额外的参数。 总结,XMLHttpRequest的同步请求虽然在某些特定情况下有其用处,但应谨慎使用,以避免阻塞用户界面。异步请求是现代Web开发的首选,它允许...

    简单的回调demo

    - 排序、过滤和映射等数组操作:JavaScript中的`Array.prototype.sort()`、`filter()`、`map()`等方法都接受回调函数作为参数。 3. 回调的优点: - 提高灵活性:允许程序员定义自己的处理逻辑,而不需要修改被...

    对js中回调函数的一些看法

    在jQuery框架中,回调函数被广泛用于事件处理和Ajax请求。例如,当我们绑定一个点击事件时,我们可以传递一个函数作为回调,该函数将接收一个事件对象 `e`: ```javascript $("#id").on('click', function(e) { ...

    Ajax(Ajax,jquery,prototype综合).rar

    例如,`.ajax()`方法可以接受多个参数,如URL、类型(GET或POST)、数据、回调函数等。`.getJSON()`和`.load()`则是特定场景下的快捷方式。 7. **Prototype的Ajax**:Prototype库提供了一个强大的Ajax模块,包括`...

    【JavaScript源代码】JS难点同步异步和作用域与闭包及原型和原型链详解.docx

    异步执行通常采用回调函数、Promise或async/await来处理。例如,`setTimeout`和`ajax`请求就是异步操作。 **同步与异步的性能与顺序** 同步操作执行顺序明确,性能稳定,但可能导致阻塞,当遇到耗时操作时,后续...

    微信小程序 同步请求授权的详解

    但是,目前的代码写法不够优雅,因为它使用了嵌套的回调函数,这可能导致代码难以维护。 要改进代码,我们可以采用`Array.prototype.reduce()`方法,将多个权限的请求转换为一个循环,如下所示: ```javascript //...

    js代码-js -- 实现同步map函数

    3. **回调函数**:虽然我们要实现的是同步`map`,但在内部,我们可能仍需要使用到回调函数来处理单个元素。这是因为即使在同步环境下,某些操作(如计算或对象转换)可能仍需要在函数内部完成。 4. **数组的reduce...

    Ajax Sample

    - `onSuccess`、`onFailure`、`onException`、`onComplete`:分别对应请求成功、失败、异常和完成时的回调函数。 ### 4. 使用Prototype JS进行Ajax请求示例 下面是一个完整的示例,展示如何使用Prototype JS发送一...

    ajax常用框架api文档

    `$.ajax()`是核心方法,支持GET和POST等HTTP请求,同时提供回调函数处理响应数据。还有`$.get()`, `$.post()`等简化版API,以及`.load()`用于局部更新HTML元素。 3. **Ext JS**:Ext JS是一个完整的前端框架,它的...

    Javascript 函数快速查询手册

    JavaScript的事件循环和回调函数机制处理异步任务,如定时器(`setTimeout`和`setInterval`)、Ajax请求和Promise。ES6引入的`async/await`使得异步代码可以更像同步代码一样编写。 八、模块系统 从ES6开始,...

    ajax.request和ajax.periodicalupdate用法讲解

    - `onSuccess`: 请求成功后的回调函数,`response`参数包含了服务器返回的信息。 - `onFailure`: 请求失败时的回调函数,同样接收`response`参数。 ### 2. Ajax.PeriodicalUpdater `Ajax.PeriodicalUpdater`是用于...

    promise原理 全网最全.rar

    - finally方法:无论Promise最终成功还是失败,都会执行finally中的回调函数,通常用于清理资源。 Promise.all:用于处理多个Promise并行执行的情况,只有所有Promise都成功时,Promise.all返回的Promise才会...

    ajaxtags

    7. **回调函数和事件处理**:AJAX请求完成后,会触发回调函数,更新DOM(文档对象模型)以反映服务器返回的数据。 8. **异步与同步请求**:了解如何在适当的情境下使用异步和同步请求是AJAX编程的重要组成部分。 ...

    前端项目-chillout.zip

    非阻塞异步循环则利用JavaScript的事件循环和回调函数、Promise或者async/await来处理任务,使得程序可以在等待某个操作完成的同时,继续处理其他任务,从而避免阻塞主线程。 在JavaScript中实现非阻塞异步循环,...

    Javascript

    6. **异步编程**:回调函数、Promise、async/await是JavaScript处理异步操作的主要方式。回调函数是早期解决异步问题的方法,但可能导致回调地狱。Promise提供了一种更优雅的链式处理方式,而async/await则引入了...

    \小贝程序员生活\课件\js\第十八节课.rar

    2. **异步编程:回调函数、Promise和async/await** - JavaScript是单线程的,但为了处理耗时操作如网络请求,引入了异步编程模型。 - 回调函数是早期处理异步操作的方式,但可能导致"回调地狱",不易阅读和维护。 ...

    JsWiki_0_1

    - 回调函数:常见回调模式及防止回调地狱的方法。 - Promise:理解Promise的状态(pending, fulfilled, rejected)以及链式调用。 - async/await:基于Promise的异步控制流,使得异步代码看起来更像同步。 7. **...

    基于AJAX的行政审批电子监察系统的实现

    服务器处理请求后,回调函数会接收到响应,此时可以解析响应数据并更新页面的部分内容。 实时性在行政审批电子监察系统中尤为重要。通过定时轮询或者使用服务器发送事件(Server-Sent Events, SSE)或WebSockets...

Global site tag (gtag.js) - Google Analytics