Javascript Callback when variable is set to X
有一个我似乎无法解决的问题。 我想编写一个接受变量和回调的通用javascript函数,并继续执行,直到该变量不是false。
例如,变量SpeedFeed.user.sid是假的,直到代码中发生其他事情,但我不想在设置之前执行特定的回调。
电话:
1 2 3 4 | SpeedFeed.helper_ready(SpeedFeed.user.sid, function(){ alert(SpeedFeed.user.sid); // Run function that requires sid to be set. }); |
功能:
1 2 3 4 5 6 7 8 9 | helper_ready: function(vtrue, callback){ if(vtrue != false){ callback(); } else { setTimeout(function(){ SpeedFeed.helper_ready(vtrue, callback); }, SpeedFeed.apiCheckTime); } } |
我把它缩小到的问题似乎是因为在setTimeout中我调用vtrue而不是实际的SpeedFeed.user.sid,它总是被设置为false。 我意识到我可以为每次只评估SpeedFeed.user.sid编写一个特定的函数,但是我希望有一个可以在整个应用程序中使用的泛型方法。
感谢任何见解:)
除了@Trey的回答,因为我还在考虑
您正在将
而不是编写类似于回调的函数来检查特定值何时为真,为什么不制作可以调用
这个问题有多种解决方案,不需要回调。一种传统的方法是使用setter和getter而不是赋值。
而不是超时使用
传递给helper_ready三个参数:
source_object,object`s_property,callback
然后检查对象属性的状态。
在你的情况下,它将是
1 2 3 4 | SpeedFeed.helper_ready(SpeedFeed.user,"sid", function(){ alert(SpeedFeed.user.sid); // Run function that requires sid to be set. }); |
全球财产:
1 2 3 4 | SpeedFeed.helper_ready(window,"sid", function(){ alert(windwo.sid); // Run function that requires sid to be set. }); |