OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

jQuery:在一个回调中处理多个请求


分享到


分类 JS学习   关键字 JavaScript   发布 ourjs  1401025564942
注意 转载须保留原文链接,译文链接,作者译者等信息。  
我曾经为Mozilla Developer Network 开发一个新功能,它需要加载一个基本的脚本文件的同时加载一个JSON请求。因为我们使用的是jQuery,意味着要使用 jQuery.getScript和jQuery.getJSON。我知道这两者都是异步的并返回一个Deferred(jQuery中的Promise模式实现, 参见: deffered object)对象,因此我想知道能不能在一个回调里按顺序请求它们,就像多数的JavaScript加载器那样(如curljs )。我很幸运,使用jQuery就可以用一个回调处理两个请求。

jQuery的JavaScript代码


就像我刚才提到的,我需要加载一个脚本和一个JSON文件,就像这样:

$.when(
  $.getScript('/media/js/wiki-min.js?build=21eb633'),
  $.getJSON('https://developer.mozilla.org/en-US/demos/feeds/json/featured/')
).then(function(a, b) {
    // 或者 ".done"
    // 好了,东西都加载好了,可以干活了

});
当资源文件加载完时,done或者callback就会被触发,我就知道已经请求完了。每一个请求都返回了不同的回调参数,如上面的返回参数就像这样:

// [response, state, jqxhr], [response, state, jqxhr]
["(function(c){var e=c(".from-search-navigate");if(e…;if(j){g.apply(m,l)}}}})(window,document,jQuery);", "success", Object] [Array[15], "success", Object]

如果我们希望再加载一个传统的Ajax请求,就像获取一个HTML模板,我们可以这样:

$.when(
    $.getScript('/media/js/wiki-min.js?build=21eb633'),
    $.getJSON('https://developer.mozilla.org/en-US/demos/feeds/json/featured/'),
    $.get('/')
).then(function(a, b, c) {
    console.log(a, b, c);
});

Dojo Toolkit很早以前就有类似的功能了,但是我不知道现代jQuery也可以。在一个回调中处理多个请求在请多场合需要用到,可以看出jQuery也在与时俱进。

原文地址: 点此
社区评论 ( Beta版 )
  • #0 纷泪雨 1401066958000
    这功能是多久之前的事啦
  • #1 寂寞寂寞就好 1401068000000
    They’ve had this functionality since version 1.5, which came out over 3 years ago. Don’t make it sound like it’s new.
  • #2 小黑 1401072847000
    貌似1.7几出来的refere什么东西
  • #3 redstone 1401498585000
    用了async以后,看所有的这类东西都完全没感觉。async最爽
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 编程是一个没有前途的工作
  2. 你已经毁了JavaScript
  3. 是什么让Node.js比Java更快?
  4. 现在,你为什么应该学Node.js
  5. 将JavaScript 作为第一编程语言
  6. 我不想雇佣女性
  7. Google正在拖互联网的后腿
  8. 用JavaScript的5个原因
  9. 使用集群(recluster)扩展多线程Node.JS
  10. 趣图:在NodeJS程序中有未处理的异常
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - JS学习
  1. 使用集群(recluster)扩展多线程Node.JS
  2. 抛弃jQuery,深入原生的JavaScript
  3. 使用Backbone构建精美应用的7条建议
  4. 在jQuery API文档中并未提及的get用法,只有读了源码才会知道哦
  5. 如何在一个VPS上连接Node.js到一个MongoDB数据库?
  6. 用Orchestrate 5步快速创建Node.js应用
  7. iFrame的妙用
  8. JavaScript的MVC模式向导
  9. 快乐Node程序员的10个习惯
  10. 我最喜欢的jQuery插件模板

 关键字 - JavaScript
  1. 用JavaScript获取当月第一天和最后一天
  2. 用JavaScript测试图像上两点之间的距离
  3. JSON序列化(stringify)对象时排除某些属性的两种方法
  4. 5个现在就该使用的数组Array方法: indexOf/filter/forEach/map/reduce详解
  5. JavaScript运算出现很多小数导致运算不精确的问题,用toFixed解决
  6. 用JavaScript实现node.js中的path.join方法
  7. 如何用CSS将select/option文本居中或居右对齐
  8. JavaScript中新建一个带全局变量参数的new Function动态函数
  9. 设置select元素中option的默认值
  10. 在JavaScript中创建命名空间的几种写法

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号