2016-05-16 69 views
0

我有一个身份验证系统,它有几个信息,包括一个expires_in属性,以秒为单位声明。这会通知生成的令牌何时过期,为了处理这个问题,我使用了RxJS.Observable的概念。如何设置RxJS.Observable.timer()到期日期

随着expires_in价值,我计算到期日产生Date对象,增加它与到期值,并得到它的时间与getTime(),在milisseconds,以及与此我有到期日。

当我宣布RxJS.Observable,我在做这样的:

// The code is shortened to the relevant part 

let obs = Observable.timer(dueVar) // Which is in milisseconds 
    .subscribe(
     (x) => console.log(x), 
     (x) => console.log(x), 
     () => console.log('Expired') // onComplete, right? Only this one matters to me... 
    ); 

我试图把,哪里是dueVarDate对象,但没有成功可言......代码段抛出subscribe()函数的第一个参数为0 [Number],并立即抛出Expired,这是最后一个参数。

如何进行此操作?对于这个问题,我没有任何相关的解释......第二个参数,正如我在文档中看到的那样,它是可选的,并且用于在每个宣布的时间内调用onNext回调。但我只需要派遣一次。

+0

你可以用样本输入和预期输出制作大理石图吗?看起来像你可以使用'delay'运算符 – user3743222

+0

为什么你说你有一个'dueVar'这是一个日期对象,但在你说的代码中它是以毫秒为单位? – paulpdaniels

+0

@paulpdaniels这是一个错字,我会解决这个问题,但在文档中他们说第一个参数可以是一个正整数或一个Date对象。 –

回答

0

关于评论,它变得更加清楚我需要做什么。

我正在考虑以绝对方式的时间,但如果我将使用milisseconds,作为@paulpdaniels说,时间需要从现在,这使得一个巨大的差异相对。

因此,尽管从1970年代开始用整个时间戳通知参数,但我只需要使用expires_in属性乘以1000来将其从几秒变为毫秒。