`
unifly
  • 浏览: 56203 次
  • 性别: Icon_minigender_1
  • 来自: yantai
社区版块
存档分类
最新评论

怎样用JavaScript实现非Ajax方法的异步调用回调和线程?

    博客分类:
  • Web
阅读更多
    问题:在一个项目中用Excel组件OWC.Spreadsheet在客户端导出HTML格式的表格为Excel文件,对于数据量较大的表格导出会造成IE窗口停止响应,用户体验很差。
想到三个解决方案:
    1、用applet结合jxl实现。暂不考虑。
    2、利用类似Ajax请求的机制,异步调用一个导出方法,该方法在导出完毕后回调一个callback方法。
    3、利用类似Java中的线程机制,直接开一个导出线程即可。
    google了一下,对于2,虽然可以用setTimeout()实现异步调用,但仍然会造成窗口无响应;对于3,得出结论,JavaScript对线程没有原生的支持。
    请教2、3方案用JavaScript实现有解么?或者说对于这个导出应用根本无法实现?……
分享到:
评论
5 楼 unifly 2006-10-26  
Lucas Lee 写道
那你就别搞那么多数据啊,每次少一点,总比死机强把。

嗯,可是用OWC.Spreadsheet怎么能追加数据呢?
4 楼 LucasLee 2006-10-26  
那你就别搞那么多数据啊,每次少一点,总比死机强把。
3 楼 unifly 2006-10-26  
不瞒楼上二位,后台是.Net,俺不太熟悉的说,.Net利用DCOM方式生成Excel也需要解决不少问题,比如表头格式、单元格格式、Excel进程的停止释放.....,项目里面的表头千差万别,写一个通用的Excel导出类要费不少功夫。
而前台导出虽然慢点,但简单可靠,且能比较好的还原HTML格式的表格……
抛开这个导出需求不说,对于客户端稍长时间的操作这个题目还是有点价值的吧,呵呵……
2 楼 alang 2006-10-26  
不想麻烦客户端,只能麻烦服务器端了。

把html表格回传到服务器,在服务器端生成excel。
或者不回传html,只把用户的查询条件回传到服务器,在服务器端生成excel。
1 楼 LucasLee 2006-10-26  
我看大数据量的话,在后台用POI之类的生成Excel文件,再传到浏览器下载好了。

相关推荐

    .net异步调用后台函数

    在.NET框架中,异步调用后台函数是提高应用程序性能和用户体验的重要技术。它使得前端UI可以在等待后台处理任务时,不被阻塞,从而实现无刷新调用。以下是关于这个主题的详细解释: 1. **异步编程基础**: 异步...

    JavaScript回调函数面试题.zip

    JavaScript回调函数是JavaScript异步编程的核心...面试中,对回调函数的理解和使用往往能体现开发者对JavaScript异步编程的掌握程度。通过学习和实践,我们可以更好地应对各种异步编程挑战,编写出高效、易读的代码。

    asp.net中如何使用WPF回调

    通过在客户端使用 JavaScript 和 AJAX 控件,可以创建一个异步更新机制,当 WCF 回调触发时,JavaScript 代码可以在正确的线程上下文中更新页面。 以下是实现这个解决方案的基本步骤: 1. **创建 WCF 服务**:确保...

    浅析JavaScript回调函数应用_.docx

    这种技术在JavaScript中尤为重要,因为JavaScript是单线程的,使用回调可以处理非阻塞操作,如等待文件加载、网络请求或计时器事件。 一、回调函数的定义 回调函数的核心概念是函数作为参数传递。当函数A被作为...

    c# ajax调用webapi上传图片、传值 demo

    在本文中,我们将深入探讨如何使用C#的Ajax技术来调用WebAPI接口,以便实现图片上传和值传递的功能,并且结合图片相似度识别对比。这个主题对于开发现代Web应用程序至关重要,因为它允许用户无需刷新页面就能与...

    javascript异步编程 设计快速响应的网络应用 源码

    当你调用一个异步函数时,你可以传递一个回调函数,当异步操作完成时,这个函数会被调用。例如,读取文件、发送网络请求等都是常见的异步操作。 然而,回调函数会导致"回调地狱"问题,即嵌套的回调函数使代码变得...

    尚筹网-加餐-Ajax的同步和异步请求1

    以下是一个使用jQuery库的Ajax异步请求示例: ```javascript $.ajax({ url: "test/ajax/async.html", type: "post", dataType: "text", success: function(response) { console.log("ajax 函数内部的 success ...

    异步编程的实现

    当异步操作完成后,调用预先设定的回调函数来处理结果。但回调地狱(Callback Hell)问题——即回调函数嵌套过多导致代码难以理解和维护,是其主要缺点。 - 事件循环与事件监听:通过注册事件监听器,当特定事件发生...

    Javacripts异步编程课件

    由于JavaScript运行在单线程环境中,它使用事件循环和回调队列来实现异步编程。在详细探讨这些内容之前,我们先来了解异步编程出现的背景和必要性。 **为什么需要进行异步编程** JavaScript应用程序在单一线程中...

    用户名校验(ajax技术)

    4. 阻塞问题:由于JavaScript是单线程执行,长时间的Ajax请求可能阻塞其他脚本的执行,因此应尽量减少请求时间或使用Web Worker。 5. 安全性:Ajax并不提高安全性,仍需对用户输入进行验证和过滤,防止XSS(跨站...

    Net下使用Ajax

    可以监听XMLHttpRequest的onerror事件,或者在jQuery的Ajax方法中设置错误回调,以捕获并处理网络、服务器或其他类型的错误。 10. **跨域问题**: 当Ajax请求跨越不同的源(域、协议或端口)时,会遇到跨域问题。...

    现代JavaScript教程

    JavaScript是单线程的,但通过事件循环和异步处理(如回调函数、Promise和async/await)可以实现非阻塞I/O。这些概念是现代Web开发中的核心,尤其是当处理耗时操作如网络请求时。 五、ES6及更新版本的新特性 自...

    JS回调Demo

    总结,JavaScript回调函数是实现异步编程的关键,理解其工作原理和使用技巧对于编写高效、可维护的JavaScript代码至关重要。无论是简单的网络请求,还是复杂的文件操作,回调函数都能发挥重要作用。同时,面对回调...

    JavaScript 异步调用框架 (Part 1 - 问题 & 场景)

    在JavaScript开发中,异步调用是一个核心概念,尤其是在Ajax应用中,通过XMLHttpRequest进行数据交互是常见的操作。然而,JavaScript作为单线程语言,其异步调用的机制与传统同步编程存在较大差异。在异步调用中,...

    jquery ajax 同步异步的执行 return值不能取得的解决方案

    这是因为AJAX请求默认是异步执行的,所以即使在success回调函数中设置了变量,由于JavaScript的单线程特性,return语句会在AJAX请求完成之前就执行完毕,导致无法取得预期的返回值。 首先,我们来看一下,为什么在$...

    谈谈JavaScript自定义回调函数

    // 调用回调函数 callback(); } else { alert("数据已存在"); } } }); } ``` 在上述示例中,我们定义了一个`add`函数,它接受三个参数:URL、数据和回调函数。在异步请求成功后,如果数据不存在,就调用`...

    javascriptAPI,javascript参考资料,javascript

    7. **异步编程**:JavaScript 是单线程的,但通过事件循环和回调函数、Promise、async/await 实现了非阻塞的异步处理。 8. **模块系统**:ES6 引入了模块系统,通过 import 和 export 关键字进行模块导入和导出,...

    JavaScript系列之―同步还是异步?

    最简单的实现方法就是使用信号量的类来控制异步调用的顺序。这样,我们就可以保证多个dwr方法调用的顺序,并且避免了回调函数的嵌套。 在本文中,我们讨论了JavaScript中的异步编程和回调方法,并且探讨了异步编程...

    generator-ajax.zip

    本项目“generator-ajax.zip”聚焦于JavaScript中的几个关键概念:Generator、js进程中断、异步操作的同步处理、以及如何重写alert和confirm来中断程序执行。通过结合html、Generator、thunk和ajax技术,我们可以...

    回调函数的定义和应用场景

    4. **动画和定时器**:在实现动画效果或者定时任务时,`setTimeout`和`setInterval`等函数会使用回调函数来决定何时执行下一步。 ```javascript function animate() { console.log('帧更新'); setTimeout(animate...

Global site tag (gtag.js) - Google Analytics