【发布时间】:2018-12-08 03:13:50
【问题描述】:
api/index.js
const URL = 'http://10.0.2.2:5000';
const fetching = false;
export default (type, filter, dateFilter, position) => {
if(fetching) return Promise.reject(new Error('Request in progress'));
fetching = true;
return fetch(URL + `/search/${type}/${filter}/${dateFilter}/${position}/0/0`)
.then(response => Promise.all([response, response.json()]))
.catch(err => console.log("error catch search:", err.message))
}
我需要把 fetching false 这样我就可以再次调用这个函数,但我不知道把它放在哪里让它工作。 如果我在 then writen 之后和 catch 之前创建另一个 then 像这样:
.then(() => fetching = false)
问题是它返回 false 到调用函数的地方,而不是调用这里的数据:
actions/index.js
getDataApi(type, filter, dateFilter, position)
.then(res => {
if (res !== false) {
if (state.dataReducer.data.length === 0) {
dispatch(getDataSuccess(res[1]))
} else {
dispatch(getDataSuccess(res[1], state.dataReducer.data))
}
}
})
.catch((err) => console.log(9999, err))
所以我的问题是它没有进入getDataSuccess,因为它是假的。我不知道为什么它不能将数据发送到这个函数并结束发送fetching = false的结果。
【问题讨论】:
-
const fetching = false;Erm,const,你确定?
标签: javascript reactjs react-native promise