等待javascript线程
有人知道如何在javascript中等待线程吗等待javascript线程,javascript,multithreading,google-maps-api-3,Javascript,Multithreading,Google Maps Api 3,有人知道如何在javascript中等待线程吗 var resultList = new Array(); function query(){ //more stuff service.nearbySearch(request, callback); //<-- this is the thread console.log(resultList); //<-- still empty array setTimeout(functi
var resultList = new Array();
function query(){
//more stuff
service.nearbySearch(request, callback); //<-- this is the thread
console.log(resultList); //<-- still empty array
setTimeout(function() {
console.log(resultList); //<-- array filled (after hardcoded timeout)
}, 1000);
}
function callback(results, status) {
//...
resultList.push(resultObject);
}
var resultList=new Array();
函数查询(){
//更多的东西
service.nearbySearch(请求、回调);//Javascript都在同一个线程中执行。这是一个阻塞线程,将阻止浏览器更新DOM,直到它返回到浏览器
这就是为什么Javascript文件应该包含在HTML页面的底部
上面的问题是,service.nearbySearch
正在对服务器执行AJAX或REST请求,并且响应是异步的(稍后会发生)
您需要移动处理回调响应的逻辑
var resultList = new Array();
function query(){
service.nearbySearch(request, function(results, status) {
callback(results, status);
console.log(resultList);
});
}
function callback(results, status) {
//...
resultList.push(resultObject);
}
javascript中没有线程。上面的代码与您认为的不一样。回调
在同一个线程上调用。将console.log(resultList)
放入回调?而不是var resultList=new Array();您应该编写var resultList=[];您可以使用google了解原因。