我想有一个可以从任何地方使用的加载微调器。所以,我创建了一个BoolHandler:OutWatch:强制更改元素立即显示
val loadingSpinnerEvents = createBoolHandler()
这势必会加载微调格:
val loadingSpinner = div(
hidden <-- loadingSpinnerEvents
, Icon.loadingIcon
)
所以我做到以下几点:
def reducer(previousState: State, action: Action): State = {
var st = previousState
loadingSpinnerEvents <-- Observable.create { obs =>
obs.next(false)
st = newState(previousState, action)
Future {
// do the long running work
}.onComplete { _ =>
obs.next(true)
obs.complete()
}
}
st
}
根据的println输出,布尔值正确处理并立即处理。
问题是只有在整个工作完成后才显示元素更改。
有没有办法强制这个或我错过了什么。
你的两个绑定之间做什么样的工作?请注意,这不完全是“OutWatch”做事的方式。您正在为相同的事件创建两个绑定,这可能是一个误解。 '< - '操作符不会发送单个事件,但会为observable创建订阅。如果你只是发送一个单一的值,这并不合理。 –
你说得对。但是,您将如何向用户展示正在进行的工作。因此,在开始计算时显示加载微调器 - 并在页面完全加载时隐藏它。 – pme
您是否尝试过使用我的解决方案? :) –