有没有人知道如何在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);
}
对程序的逻辑做,在回调函数内部不能使用resultList进行处理。它需要在“父”(查询功能)中。所以在那里我需要等待线程(因此要填充数组)因为我可以继续并且结果。
所以我的问题。在java中是否有任何.join()方法?或像在Unix中的waitpid()?或等待完成任务的最佳做法是什么?
问候
答案 0 :(得分:0)
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);
}