0

我对 YUI 比较陌生 - 浏览他们很棒的文档,我没有找到同步加载外部资源的方法或标志。

或者反过来的问题;对于每个匹配的节点,我需要调用一个方法,该方法在节点上插入一些东西;对于异步调用,记住的 标识符似乎搞砸了。

因此回调需要坚持

pid

调用函数时,而不是执行回调时 - 我做对了吗?

var platform_ids = YAHOO.util.Selector.query('.platform_id'); 

for (var i = 0; i < platform_ids.length; i++) {
    var pid = platform_ids[i].getAttribute("id");
    var sUrl = "/platform/" + pid + "/description/";
    var callback = { success: function(o) { 
        document.getElementById(pid).innerHTML =  o.responseText; }}
    var transaction = YAHOO.util.Connect.asyncRequest(
        'GET', sUrl, callback, null
    );
}

谢谢。MYYN

4

1 回答 1

4

您不想要同步请求。用户体验可能很糟糕。你真的只是想将一个值传递给你的回调,这样它就不会依赖pid(正如你所注意到的,当你的回调被调用时,它通常会有一个不同的值):

var callback = { success: function(o) 
  { 
    document.getElementById(o.argument).innerHTML =  o.responseText; 
  }, 
  argument: pid
};

在这里,我使用argument回调成员来保存 ID,并在回调函数本身中引用它,确保每个回调使用正确的 ID。

于 2009-04-29T17:07:27.930 回答