【发布时间】:2018-11-25 12:02:29
【问题描述】:
我正在开发一个反应应用程序。我需要使用 api 请求的结果来更新状态。现在应用程序运行起来,我必须经常发出 api 请求。因此,一旦结果到达,我就在 then() 中设置状态。但有些结果比其他结果需要更多时间。所以有时前一个承诺的结果会设置状态而不是当前。我如何确定承诺的优先级,以便最新的请求结果设置状态。或者,一旦我打电话给新的承诺,还有其他方法可以摆脱以前的承诺吗?
this.state = {
searchterm: '',
isfocused: false,
current: -1,
noresults: false,
// latest promise id
reqseqid: 0,
filteredList: []
}
callingfunction(){
let reqseqid = this.state.reqseqid + 1;
this.setState({
searchterm,
filteredList: [],
reqseqid
});
searchresults(searchterm, reqseqid)
.then(res => {
let { results, reqseqid } = res;
console.log(reqseqid, this.state.reqseqid);
if(reqseqid === this.state.reqseqid){
if(res.length === 0){
this.setState({
current: -1,
filteredList: [],
noresults: true
});
}else{
this.setState({
current: -1,
filteredList: results,
noresults: false
});
}
}
});
}
【问题讨论】:
标签: javascript reactjs asynchronous promise state