【发布时间】:2020-11-05 04:55:03
【问题描述】:
我正在使用 async 和 await,以便调用相同的 API,但日期不同。 ->
假设用户想查看来自01/02/2020 - 20/02/20 的表格数据,所以我想通过每天一个接一个地访问 API 21 次。所以,我使用了setInterval(fun, 1000)。但是 AWAIT 不会在间隔中工作。
请看下面的代码 ->
//fromDate = date selected by user. (for ex 01/02/2020)
//momentToDate = the last date set by user. (for ex. 20/02/20)
//endDate = fromDate + 1 (in order to get one day data from API)
function onClickGetDateByFilter() {
setComapreTableLoading(true);
let endDate = moment(fromDate, 'YYYY-MM-DD hh:mm:ss');
var callInterval = setInterval(async () => {
endDate = moment(endDate).add(1, 'days');
if (endDate <= momentToDate) {
let date = { fromDate, toDate: endDate }
await getDataWithClientId('clientID', date)
.then(async (res) => {
if (res.results && res.results.length > 0) {
setClientData({...clientData}, res.results)
setComapreTableLoading(false);
}
})
.catch(err => {
setComapreTableLoading(false);
console.log(err);
alert(err);
})
}
else {
setComapreTableLoading(false);
clearInterval(callInterval)
};
}, 1000)
}
我需要在用户选择的最后一个日期之前调用 setInterval。但是使用上述方法,在从服务器获取响应之前,它会一直调用一个新的 API,但是我想在第一个 API 返回响应后第二次调用 API。
任何建议也将不胜感激。 谢谢。
如果您需要有关代码的更多信息,可以询问。
【问题讨论】:
-
因为你的意思是名为
async的外部模块,你确实需要安装和导入它。 -
async 是 JS 中的保留关键字,但是 async.parallel 是一个 npm 包,您需要安装然后使用 import parallel from 'async/parallel' 导入
-
需要安装
npm install async并导入async -
@RajatSharma 很不幸,但是有一个名为
async的库,您可以导入和使用它。它实现了async.parallel函数。async关键字与async.parallel无关 -
因为
async.parallel与async-await无关。它只是一个名为async的模块
标签: javascript node.js reactjs async-await setinterval