如何在Angular 2中设置的时间间隔内调用函数。我希望在特定的时间间隔(例如10秒)调用/触发它。 对于Eg: ts文件
num: number = 0;
array: number[] = [1,5,2,4,7];
callFuntionAtIntervals(){
if(num==5){
num=0;
}
num++;
}
HTML:
<div>{{ array[num] }}</div>
所以基本上div值会间隔变化
答案 0 :(得分:10)
function()
无限循环,每隔10秒namespace EastWest.ViewModels
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Country
{
[Key]
public int CountryID { get; set; }
public Nullable<int> CountryCode { get; set; }
public string CountryName { get; set; }
public string ISO2 { get; set; }
public string ISO3 { get; set; }
public Nullable<System.DateTime> CreateDateTime { get; set; }
public Nullable<int> ActiveStatus { get; set; }
public Nullable<int> CreatedBy { get; set; }
public Nullable<System.DateTime> LastUpdateDateTime { get; set; }
public string Remarks { get; set; }
}
}
被调用
答案 1 :(得分:2)
您也可以尝试使用传统的setInterval函数。
setInterval(() => {
this.callFuntionAtIntervals();
}, 1000);
答案 2 :(得分:2)
在你的TS逻辑中,根据“interval”定义一个observable,它会发出值0,1,2,3,4,0,1,......
this.index = Observable.interval(10000).map(n => n % this.array.length);
在您的组件中,使用async
展开该observable并使用它来索引数组。
{{array[index | async]}}
答案 3 :(得分:0)
请检查下面的内容可能有帮助,
我的要求:就像每隔5秒钟需要调用一个服务一样,如果我们取回所需的数据,则需要停止调用该服务并继续进行下一个流程。 5秒后再次进行其他呼叫服务。
停止服务调用的条件就像在重试最大次数后(在我的情况下为20次)或在一定时间(在我的情况下为120秒)之后。
注意:我在打字稿中使用
let maxTimeToRetry = 120000; // in ms
let retryCount = 0;
let retryTimeout = 5000; // in ms
let maxRetries = 20;
const startTime = new Date().getTime();
// Need to use self inside of this, inside setInterval method;
const interval = setInterval(function () {
retryCount++; // INCREMENT RETRY COUNTER
self.service.getData(requestParams).subscribe(result => {
if (result.conditionTrue) {
clearInterval(interval); // to stop the timer or to stop further calling of service
//any execution after getting data
}
});
if ((new Date().getTime() - startTime > maxTimeToRetry) || (retryCount === maxRetries)) {
clearInterval(interval);
// any execution
}
}, retryTimeout);