我在JavaScript中有以下方法:
function getData(){
var result;
$.getJSON("app/data/ptl", function (data) {
if (data == null) {
return false;
}
var x_data = new Array();
var y_data = new Array();
$.each(data, function(index, value) {
x_data.push(index);
y_data.push(value);
});
result = [months_data,value_data];
});
alert('');
return result;
}
Run Code Online (Sandbox Code Playgroud)
调用此方法时,将检索确切的数据.但是当我删除alert('')数据时没有收到.有谁知道这个问题的合理解释?
那是因为你的函数是异步的,并且删除alert使得return r在远程服务器应答之前执行该行.
您不能简单地从调用异步工作的函数同步返回.通常的解决方案是提供回调并在回调中执行您想要执行的操作:
function fetchData(doWithData){
$.getJSON("app/data/ptl", function (data) {
if (data == null) {
return;
}
var x_data = new Array();
var y_data = new Array();
$.each(data, function(index, value) {
x_data.push(index);
y_data.push(value);
});
r = [months_data,value_data];
doWithData(r);
});
}
fetchData(function(result) {
// use result here
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |