嗨,首先对不起我的英语不好。我已经在 SO 中搜索过了。但我没有得到我需要的确切答案。我的问题是我需要同步 Ajax 请求。我知道我们可以使用“ asynch : false ”。但这会使浏览器锁定。我的网络中有一个文件夹树(我正在使用“ tafel 树”js)。树节点是在运行时生成的。每次用户单击一个节点时,它都会向服务器发送请求并将该节点添加到树中。但问题是如果通过单击f5刷新页面,那么我需要加载我之前已经选择的树结构。我使用“ asynch : false ”实现了它。但这会使浏览器太慢。
这就是我所拥有的
function loadPage() {
/* some other codes are here*/
/* here i call an ajax for get the inside folder list in correct order.(i am usig protoype)*/
new Ajax.Request(ajaxGetInsideFolderIdsUrl,
{
parameters: {branchId: CurrentSelectfolderId},
onSuccess: function(res) {
/* onSuccess i call another function*/
var brs = res.responseText.split(","); // branch ids in correct order.
syncFolder(brs)
}
}
function syncFolder(brs){
for(var i= 0 ; i < brs.length; i ++){
var tempbranch = tree.getBranchById(brs[i].getId());
selectAfterChange( tempbranch)
/*
selectAfterChange function is used for selecting current branch. calling "tafle tree" select() function in side it.
i just created an copy of "select()","_openPopulate()" functions used in "tafle tree" and modified it with "asynch : false ".and now its working fine.
*/
}
}
function selectAfterChange(brs){
brs.chk_select();
/* for selecting the branch (created a copy of current "select()" function used in "tafle tree" js
and modified it with "asynch : false "and now its working fine.) */
showList();// for listing items in side that folder (in another Ajax page).
}
我的问题是如果用户打开了一个长分支。然后刷新页面,由于同步 Ajax 调用,加载将花费太多时间。花太多时间对我来说不是什么大问题。但是浏览器被锁定,直到所有请求都被执行。有没有其他方法可以做到这一点。