作者B9 (叶酸酸)
看板Ajax
标题Re: [心得] jQuery queue 介绍
时间Fri Apr 20 23:45:17 2012
※ 引述《TonyQ (自立而後立人。)》之铭言:
谢谢你慷慨地讲解。:)我要提供另一个解决相同难题的方法。
不过首先回顾一下题目:
要如何确保所有相依的事件一一发生,并且达到预期的顺序。
这个问题可以用 deferred.pipe 漂亮解决。
假设我们现在有一个网址 A,开网址 A 可能成功也可能失败,成功得到网址 B。
然後开网址 B 有可能成功,也可能失败,成功得到网址 C。
又开网址 C 也可能成功或失败,成功得到我们要的资料,
无论哪一个失败我们都要 throw new Error。
没有 deferred.pipe 的时候我们这样写:
$.get(A).done(function(B)
{
$.get(B).done(function(C)
{
$.get(C).done(function(data)
{
console.log(data);
}).fail(function()
{
throw new Error("failed getting data");
});
}).fail(function()
{
throw new Error("failed getting data");
});
}).fail(function()
{
throw new Error("failed getting data");
});
有了 deferred.pipe 的时候就漂亮了:
$.get(A).pipe(function(B)
{
return $.get(B);
}).pipe(function(C)
{
return $.get(C);
}).pipe(function(data)
{
console.log(data);
},function(error)
{
throw new Error("failed getting data");
});
连 throw new Error 都少了好几个。
--
Oni devas ami animalojn. Ili estas tiel bongustaj.
One should love animals. They are so tasty.
每个人都应该爱动物,他们是如此美味。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.52.121