2010-11-08 5 views
1

Можете ли вы сказать мне, почему это работает:Javascript SetTimeout

PageMethods.UpdateForcedDisposition(forcedDisposition, a.value, SucceededCallback, FailedCallback); 

Когда это не делает?

setTimeout("PageMethods.UpdateForcedDisposition(" + forcedDisposition + "," + a.value + ", SucceededCallback, FailedCallback);", 1000); 

Интересно, что подобный вызов работает с setTimeout:

setTimeout("PageMethods.UpdateSales(" + id + ", " + a.value + ", SucceededCallback, FailedCallback);", 1000); 

... Я в тупике!

ответ

6

Избегайте пропускания строки до setTimeout. Где это возможно, использовать анонимные функции:

window.setTimeout(function() { 
    PageMethods.UpdateForcedDisposition(
     forcedDisposition, 
     a.value, 
     SucceededCallback, 
     FailedCallback 
    ); 
}, 1000); 

setTimeout со строкой выполняется в глобальном масштабе. Если вы пытаетесь ссылаться на переменные из текущей области, вы получите ошибку.