Deferred 异步模型
2015-10-23 11:51
260 查看
Deferred 在 jQuery 和 Twisted 框架中都有出现,其思想都是相似的,以下以 Jquery 来写。
在传统的 Ajax 调用时,我们可以将请求写在一个 settings 里面,然后直接传递给 ajax(),这个 settings 包含了请求的 url 地址和当返回数据后执行的回调函数。在下面的代码中,当 test.html 返回正常时,就会弹出框提示成功调用。
如果需求想要在页面返回的时候做更多的事情,那么我们需要在 success 里面添加函数,可能再会嵌套一层代码,可能让代码变得混乱。
那么采用全新的链式写法以后,减少了回调的嵌套,代码可读性变得更高了。
-JavaScript Promise 告别异步乱嵌套
传统的 Ajax 调用
$.ajax() 在默认的情况下是以非阻塞的方式调用的,即 async = true,这里所说的异步,既是在业务层面的异步,也就是页面同步加载完框架后再加载数据的这种模式,又是在代码层面的异步,ajax 函数立即会返回,然后执行下一条语句。在传统的 Ajax 调用时,我们可以将请求写在一个 settings 里面,然后直接传递给 ajax(),这个 settings 包含了请求的 url 地址和当返回数据后执行的回调函数。在下面的代码中,当 test.html 返回正常时,就会弹出框提示成功调用。
// 来自参考文档 $.ajax({ url: "test.html", success: function(){ alert("成功调用"); }, error:function(){ alert("调用出错"); } });
如果需求想要在页面返回的时候做更多的事情,那么我们需要在 success 里面添加函数,可能再会嵌套一层代码,可能让代码变得混乱。
全新的链式写法
$.ajax("test.html") .done(function(){ alert("成功调用"); }) .fail(function(){ alert("调用出错"); }) .done(function(){ alert("第二个回调函数!");} );
那么采用全新的链式写法以后,减少了回调的嵌套,代码可读性变得更高了。
参考文档
-jQuery的deferred对象详解-JavaScript Promise 告别异步乱嵌套
相关文章推荐
- jQuery Deferred和Promise创建响应式应用程序详细介绍
- 在jQuery1.5中使用deferred对象 着放大镜看Promise
- jQuery的deferred对象使用详解
- jquery基础教程之deferred对象使用方法
- jQuery之Deferred对象详解
- javascript Deferred和递归次数限制实例
- 在jQuery 1.5中使用deferred对象的代码(翻译)
- jQuery->Deferred then
- 阅读jQuery--Deferred
- jquery Deferred 数组
- Deferred Shading介绍
- js-jQuery中的Callbacks、Deferred和When对象详解(2)
- js-jQuery中的Callbacks、Deferred和When对象详解(1)
- [Python] Twiested - 基于事件驱动的网络编程
- jQuery deferred 对象的 promise 方法
- node.js 异步编程解决方法 了解一
- dojo异步编程 dojo/Deferred
- dojo异步编程之dojo/promise/all模块(dojo/DeferredList替代者)
- jQuery._Deferred 理解