js,对象's状态监视
js, object's state monitoring
有时在服务器上,当对象被另一段代码更改时,我会遇到需要从对象中获取一些数据的情况。在对象查看过程中保持最新的对象状态非常重要。我通过这样的代码解决了这个问题:
var Obj1={}
Obj1.actual=false;
//asynk part that modifies object
function modify_func(){
Obj1.actual=false;
//modifying operations
Obj1.actual=true;
}
//asynk part that gets object state
function view_func(){
if(Obj1.actual){
//operations
...
return;
}
//if not actual
var timer=setInterval(function(){
if(Obj1.actual){
//operations
...
clearInterval(timer)
}
},1000)
}
这两个功能可以在任何时间被唤醒。然而,我并不认为使用setInterval和reality字段是个好主意。这个问题有更好的解决方案吗?
您可以在这种情况下使用Promise
。它的结构取决于您的实际用例。
设置可能如下所示:
Obj1 = {};
//async part that modifies object
function modify_func() {
//at this point you might need to check if modifying is already in progress.
Obj1._modifying = new Promise(function(resolve, reject) {
//modifying operations
delete Obj1._modifying;
resolve();
});
}
function view_func() {
if (Obj1._modifying) {
Obj1._modifying.then(_view_fun_internal);
} else {
_view_fun_internal();
}
}
function _view_fun_internal() {
//do some stuff on the ready object
}
但值得庆幸的是,只有在_view_fun_internal
中的数据收集是同步的情况下,这才会很好地工作。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 事件和状态
- 获取选择框的状态
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何使用密码检测网络中的状态连接
- Ember.js-接口状态应该存储在哪里
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 在Angular 2中布线期间保持零部件处于活动状态
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- XMLHttpRequest未返回值-状态202
- 使用javascript反复检查用户在facebook上的登录状态
- 如何使bxslider仅在移动视图中处于活动状态
- 获取ASP.NET Ajax Timer状态
- React redux初始化功能,无论状态变化如何
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 从组件状态的数组中删除元素
- iOS 中的按钮触摸状态
- js,对象's状态监视