等待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

有人知道如何在javascript中等待线程吗

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了解原因。