这段代码的问题在哪里?
Where is the issue in this code?
我在函数中有一个 XMLHttpRequest,结果工作正常。但我不能 return 这个值。
plugin.js
var users = getUsers(url);
pluginfunctions.js
function getUsers(u) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
console.log(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
console.log(obRespuesta);
return obRespuesta;
}
好的,obRespuesta 是一个空数组。
第一个console.log的值为:array[2]。效果不错。
但是最后一个console.log和return的值是一个空数组。数组[0]
我认为这是因为 return 在客户端更改状态之前执行。
如何解决?
您需要让您的函数接受回调并改为调用该回调。
function getUsers(u, callback) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
callback(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
}
现在您可以通过以下方式获取用户:
getUsers(url, function(users) {
//do your parsing with users
});
我在函数中有一个 XMLHttpRequest,结果工作正常。但我不能 return 这个值。
plugin.js
var users = getUsers(url);
pluginfunctions.js
function getUsers(u) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
console.log(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
console.log(obRespuesta);
return obRespuesta;
}
好的,obRespuesta 是一个空数组。 第一个console.log的值为:array[2]。效果不错。
但是最后一个console.log和return的值是一个空数组。数组[0]
我认为这是因为 return 在客户端更改状态之前执行。
如何解决?
您需要让您的函数接受回调并改为调用该回调。
function getUsers(u, callback) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
callback(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
}
现在您可以通过以下方式获取用户:
getUsers(url, function(users) {
//do your parsing with users
});