javascript中的数组不返回值
在上面的代码中,如果记录。函数(数据)中的results.length得到的结果为1,但当我记录performrequest之外的值时,我得到的值为0,我希望将整个数组结果的值返回给另一个函数 请注意,perform request是一种从rest api调用json数据的方法,位置的长度为4AJAX中的“异步”部分意味着,在您的情况下,传递给performRequest的结果处理函数的执行不会阻塞程序流的其余部分。它计划在HTTP响应从服务器返回请求后执行 这也是为什么您无法知道何时会执行console.log(results.length)。大多数情况下,它很可能在结果处理程序函数之前执行:结果处理程序函数依赖于要完成的HTTP请求,并且异步执行,而console.log(results.length);没有 当您希望在集合中循环并为每个项同步执行AJAX请求时,可以从结果处理程序调用下一项的执行。一个简单的基于JQuery的示例可以是:javascript中的数组不返回值,javascript,arrays,node.js,function,closures,Javascript,Arrays,Node.js,Function,Closures,在上面的代码中,如果记录。函数(数据)中的results.length得到的结果为1,但当我记录performrequest之外的值时,我得到的值为0,我希望将整个数组结果的值返回给另一个函数 请注意,perform request是一种从rest api调用json数据的方法,位置的长度为4AJAX中的“异步”部分意味着,在您的情况下,传递给performRequest的结果处理函数的执行不会阻塞程序流的其余部分。它计划在HTTP响应从服务器返回请求后执行 这也是为什么您无法知道何时会执行co
for (var i in locations) {
performRequest(options, function (data) {
console.log("Got response: " + i + " " + options.host);
results.push(data.current_observation);
// return results;
});
console.log(results.length)
}
这个示例有一些缺陷,例如,当您使用大量的值和较短的响应时间时,它会人为地减慢一切 你注意到你的
console.log(results.length)
最先出现了吗?我从来都不明白为什么异步请求/操作/函数是异步的。
var values = [1, 2, 3, 4, 5];
var count = 0;
var i = -1;
function next() {
if(i>=values.length) return;
i++;
$.get("http://www.example.com/result/" + i, function(data) {
// do something with your data.
// notice that at this point you can be sure your asynchronous request
// was completed and the data definitely is available (or definitely
// is unavailable). So you could for example start counting stuff here:
count++;
// now that you definitely know that the request is done (successfully or
// not), you can go ahead with the next one.
next();
});
}