【发布时间】:2019-02-27 22:46:07
【问题描述】:
我有以下代码,似乎运行良好:
observe(
store, "user",
async (data: {oldValue: ?UserTy, newValue: ?UserTy}) => {
const {oldValue: previousUser, newValue: newUser} = data;
this.entries = [];
this.confirmed_entries = [];
this.paid_entries = [];
if (newUser) {
const clear = !!previousUser;
await this.reloadEntries(clear);
}
this.last_reload = new Date();
}
);
在用户更改(登录/注销)时,这将重新加载(从数据库)当前用户的“条目”。
现在我将流添加到混合中,突然出现以下错误:
错误:(47, 64) 无法使用绑定到
listener的异步函数调用observe,因为Promise[1]与返回值中未定义的[2]不兼容。
查看mobx.js.flow,我确实可以看到它总是接受一个简单的函数,返回void。关于这个问题的文档是silent。那么观察者可以接受它里面的promise(异步)函数吗? -- 这是打字的“错误”吗?
或者我是否使用了错误的观察者,我只是“幸运地”最终执行了该函数?
如果无法做到这一点,那么重写它的最佳方法是什么?最后,我需要调用this.reloadEntries(),它会在用户更改时返回一个承诺/调用服务器。
【问题讨论】:
标签: javascript asynchronous flowtype mobx