我正在使用呈现一些 UI 的第三方库。该 api 有一个回调函数,因此可以在调用第三方库中的下一个 UI 更改之前运行必要的代码。在我的场景中,我执行用户操作(单击按钮),第三方库开始处理该操作,调用回调方法,我触发我的商店正在侦听的操作,然后更新我自己的 UI。
我正在运行的问题是第三方库在更新自己的 UI 之前依赖于我的 UI 更新。在我触发操作后的回调方法中,回调方法在我的商店完成其事件处理程序中的代码之前结束。我希望我的操作在回调方法中触发,并让回调方法等到我自己的 UI 更新完成后再继续。
示例场景代码:
行动
var Actions = Reflux.createActions([
"updateUI"
]);
店铺
class Store extends Reflux.Store {
constructor(props) {
super(props)
this.listenables = Actions;
}
onUpdateUI(){
//Update the UI
}
}
零件
class Component extends Reflux.Component{
handleCallback(){
Action.updateUI();
// Wait until UI has updated or wait x amount of time before
//returning.
}
render(){
return(
<ThirdPartyComponent callback = {this.handleCallback} />
);
}
}
我已经研究了几种不同的处理方法(Promises、async/await、为操作创建回调),每种方法都有其缺点,但没有一个给出遵循 Reflux 提供的单向流的示例。我很好奇是否有适当的方法来处理这种情况。