我有一个使用$.get()
的解析器函数中的函数。我在代码中放置了多个alerts
,以帮助我了解它在做什么。从这些alerts
中可以看出,$.get
根本没有执行,直到其他所有内容都执行完为止。有人可以帮助我了解它为什么这样做吗?我想我应该如何使其首先运行?
此代码正在托管并在线运行在sharepoint上。解析的文件也位于同一站点上的联机sharepoint上。如$.get()
块中的警报显示的事实所证明,似乎文件已正确检索-只是它没有在所需的时间完成。
// Declared object
var weewee = {};
// Ready
$( document ).ready(function() {
weewee.catDatapath = "SOME FILE PATH FOR TESTING";
weewee.catHierarchy = readCat(weewee.catDatapath);
alert("catHierarchy length is " + weewee.catHierarchy.length);
});
// Actual parse function
function readCat (filePath) {
var arrReturn = [];
alert("readCat just ran");
$.get(filePath, function(data) {
alert("this is a test for readCat - data length raw is " + data.length);
var arrRaw = data.split(/\r\n|\n|\r/);
for (var i in arrRaw) {
console.log(arrRaw[i]);
alert("parser run");
}
}, 'text');
alert("readCat end before return");
return arrReturn;
}
在下面的代码中,这是alerts
弹出的顺序:
所以,为什么不去呢:
答案 0 :(得分:-1)
尝试将readCat
更新为...
function readCat (filePath) {
alert("readCat just ran");
$.get(filePath, function(data) {
alert("this is a test for readCat - data length raw is " + data.length);
var arrReturn = [];
var arrRaw = data.split(/\r\n|\n|\r/);
for (var i in arrRaw) {
console.log(arrRaw[i]);
alert("parser run");
}
return arrReturn;
}, 'text')
.fail(function() {
return [];
});
alert("readCat end before return");
return arrReturn;
}
您遇到的问题是$.get
是异步的,因此您要在返回并处理请求之前执行返回。