Javascript 如何';等待&x27;对于API在**SET-INTERVAL中再次调用函数之前的响应**
我正在使用异步并等待,以便调用相同的API,但从不同的日期调用ex.-> 假设用户希望查看Javascript 如何';等待&x27;对于API在**SET-INTERVAL中再次调用函数之前的响应**,javascript,node.js,reactjs,async-await,setinterval,Javascript,Node.js,Reactjs,Async Await,Setinterval,我正在使用异步并等待,以便调用相同的API,但从不同的日期调用ex.-> 假设用户希望查看01/02/2020-20/02/20中的表格数据,那么我希望通过每天一个接一个地传递API来点击21次。因此,我使用了setInterval(fun,1000)。但等待不会在间隔中起作用。 请参阅下面的代码-> //fromDate = date selected by user. (for ex 01/02/2020) //momentToDate = the last date set by user
01/02/2020-20/02/20
中的表格数据,那么我希望通过每天一个接一个地传递API来点击21次。因此,我使用了setInterval(fun,1000)
。但等待不会在间隔中起作用。
请参阅下面的代码->
//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)
}
//fromDate=用户选择的日期。(适用于2020年2月1日前)
//momentToDate=用户设置的最后日期。(适用于ex.20/02/20)
//endDate=fromDate+1(为了从API获取一天的数据)
函数onClickGetDateByFilter(){
setComapreTableLoading(真);
设endDate=时刻(fromDate,'YYYY-MM-DD hh:MM:ss');
var callInterval=setInterval(异步()=>{
endDate=时刻(endDate)。添加(1,'天');
如果(结束日期){
如果(res.results&&res.results.length>0){
setClientData({…clientData},res.results)
setComapreTableLoading(假);
}
})
.catch(错误=>{
setComapreTableLoading(假);
控制台日志(err);
警惕(err);
})
}
否则{
setComapreTableLoading(假);
clearInterval(callInterval)
};
}, 1000)
}
我需要调用setInterval直到用户选择的最后一个日期。但使用上述方法,在从服务器获取响应之前,它会不断调用一个新的API,但我想在第一个API返回响应之后再调用该API
如有任何建议,我们将不胜感激。
谢谢
如果您需要有关代码的更多信息,可以询问。异步是一个实用模块,它为使用异步JavaScript提供了直接、强大的功能 您需要异步包来使用并行方法 $npm安装异步
从“异步”导入异步代码>
异步包不能与异步函数混淆,因为包Async与Async wait
无关
来源:因为您指的是名为async
的外部模块,所以您确实需要安装并导入它。async是JS中的保留关键字,然而,async.parallel是一个npm软件包,您需要安装,然后使用import parallel从'async/parallel'导入。您需要安装npm install async
并导入async
@RajatSharma。不幸的是,有一个名为async
的库,您可以导入和使用。它实现了async.parallel
函数。async
关键字与async.parallel
无关,因为async.parallel
与async wait
无关。它只是一个名为async
Yes的模块,我认为它与我们通常使用的async相同。甚至编辑器也在向我展示它的预定义方法,即使没有安装它。我的错。你能把这个问题再解释一遍,帮我解决这个新问题吗@帕特里克诺克斯