This is my code:
var b;
while(!b){
setTimeout(function(){
alert('sss')
b=1;
}, 500);
}
and it will not alert ‘sss’
What can i do?
Updated:
I want to get bounds on google maps v3:
function get_bounds(){
var bounds_;
while(!bounds_){
setTimeout(function(){
bounds_=map.getBounds();
if(bounds_){
var leftBottom=[bounds_.getSouthWest().lat(),bounds_.getSouthWest().lng()]
var rightTop=[bounds_.getNorthEast().lat(),bounds_.getNorthEast().lng()]
return [leftBottom,rightTop];
}
}, 500);
}
}
updated2:
hi patrick dw, i don’t know why , but your code doesn’t work:
var b;
function waitForB() {
setTimeout(function(){
if(!b)
waitForB();
else
alert('sss');
}, 500);
}
waitForB()
updated3:
it is ok now :
var b;
function waitForB() {
setTimeout(function(){
if(!b){
waitForB();
b='ss';
}
else{
alert('sss')
}
}, 500);
}
waitForB()
JavaScript in web browsers is run in a single thread. When you call
setTimeout(), it won’t spawn a new thread. This means thatsetTimeout()will not execute until all of your main code has finished executing.For this reason, you will end up with an infinite loop, because your loop condition is dependant on the execution of the
setTimeout()callback.Here’s an interesting article on how JavaScript timers work:
UPDATE:
Further to the updated question, you may want to listen to the
bounds_changedevent instead. I am not sure how you are planning to use yourget_bounds()function, but you may want to refactor your logic to use an event listener instead: