我有一个应用程序工作,它使用Redux和thunk来从API获取数据。这很棒!
获取第一页后,我也想获取第2,3和4页。我在item对象下的商店中将第2页添加到第1页。并将3和4放在一个名为reserveItems的缓存中,以便在用户开始滚动时为用户做好准备。我遇到的麻烦是由于Javascripts异步性质,代码超过了所有增量,所有4个获取请求最终都是针对第1页。
我以为我可以通过某种方式使用承诺解决这个问题,但是我无法让它工作,我如何访问promises中的道具和下面的then()链?
不知何故,我使用了javascript和thunk错误。我认为使用thunk可以解决异步调用的问题,但是我无法解决我的函数和文件中的问题。
这是我当前的一系列功能,需要在用户开始搜索时调用。
this.props.setPage(page);
this.props.statsFetchData(this.props.keyword);
this.props.itemsFetchData(this.props.keyword, this.props.page);
this.props.incrementPage();
this.props.itemsFetchData(this.props.keyword, this.props.page);
this.props.incrementPage();
this.props.reserveItemsFetchData(this.props.keyword, this.props.page);
this.props.incrementPage();
this.props.reserveItemsFetchData(this.props.keyword, this.props.page);
这是项目操作:https://pastebin.com/ih4TXsSD
这是减少物品的物品:https://pastebin.com/p2ZvLpTn reserveItems reducer看起来基本相同。
这是我对使用承诺的考验:
const setup = new Promise(function() {
this.props.setPage(page);
});
setup.then(function() {
this.props.itemsFetchData(this.props.keyword, this.props.page);
}).then(function() {
this.props.incrementPage();
}).then(function() {
this.props.itemsFetchData(this.props.keyword, this.props.page);
});