Javascript 什么';只有当一系列o XHR(IO)请求成功时,在YUI3中调用函数的最佳方法是什么?
我想这个问题不仅仅是针对YUI的,而是我正在使用的JS库,具体的回答会很有帮助 基本上,在加载页面时,我希望脚本使用Y.io运行几个XHR,如果它们都成功返回数据,那么我希望脚本继续下一步,这将操作接收到的数据 我可以想出一些方法来做这件事,但它们对我来说都有点笨拙,我希望有人有更好的建议。到目前为止,我的想法是:Javascript 什么';只有当一系列o XHR(IO)请求成功时,在YUI3中调用函数的最佳方法是什么?,javascript,ajax,yui,yui3,Javascript,Ajax,Yui,Yui3,我想这个问题不仅仅是针对YUI的,而是我正在使用的JS库,具体的回答会很有帮助 基本上,在加载页面时,我希望脚本使用Y.io运行几个XHR,如果它们都成功返回数据,那么我希望脚本继续下一步,这将操作接收到的数据 我可以想出一些方法来做这件事,但它们对我来说都有点笨拙,我希望有人有更好的建议。到目前为止,我的想法是: 将我想要的所有数据整合到一个JSON响应中,因此如果一个请求是好的,那么继续。(这是我最不喜欢的解决方案) 当第一个Y.io请求返回成功时,调用下一个,依此类推;当最后一个请求成功时
还有更好的主意吗?目前我对我的两个方案都不太满意,但我倾向于选择第二个方案。两个方案都有优点:
如果您需要/可以早一点开始处理数据,最好使用第二种方法。如果在处理之前需要所有数据,则需要第一种方法。这完全取决于你的处境。一般来说,如果您可以摆动它,第二种方法(多部分,而不是一个大响应)更可取。两种实现都有优点:
如果您需要/可以早一点开始处理数据,最好使用第二种方法。如果在处理之前需要所有数据,则需要第一种方法。这完全取决于你的处境。一般来说,如果您可以摆动它,第二种方法(多部分而不是一个大响应)更可取。您不需要对Y.io调用排队。一次把他们都送过去,等他们都回来了,继续前进
var data = {};
function step(id, o, part) {
try {
data[part] = Y.Lang.JSON.parse(o.responseText);
if (data.a && data.b && data.c) {
processData(data);
}
}
catch (e) {
/* handle bad JSON, failure case */
}
}
Y.io(a_url, { on: { success: step }, 'arguments': 'a' });
Y.io(b_url, { on: { success: step }, 'arguments': 'b' });
Y.io(c_url, { on: { success: step }, 'arguments': 'c' });
您不需要排队等待Y.io调用。一次把他们都送过去,等他们都回来了,继续前进
var data = {};
function step(id, o, part) {
try {
data[part] = Y.Lang.JSON.parse(o.responseText);
if (data.a && data.b && data.c) {
processData(data);
}
}
catch (e) {
/* handle bad JSON, failure case */
}
}
Y.io(a_url, { on: { success: step }, 'arguments': 'a' });
Y.io(b_url, { on: { success: step }, 'arguments': 'b' });
Y.io(c_url, { on: { success: step }, 'arguments': 'c' });
我没有发送太多数据,但我认为第二种方法也更好,因为我可以在零件进入时单独处理它们。谢谢我没有发送太多数据,但我认为第二种方法也更好,因为我可以在零件进入时单独处理它们。谢谢谢谢,我希望这样的事情是可能的。谢谢,我希望这样的事情是可能的。