簡體   English   中英

Angular Observable.Timer不更新URL

[英]Angular observable.timer not updating url

我有用戶observable.timer每隔一分鍾獲取數據。下面是代碼

getNewData(){
    var catId = this.serv.getSelectedCategory();
          var sinceId = this.myArray[0].userdataId;
            var dataurl = '';
            if (catId < 0) {
                dataurl = this.baseUrl +  '?bookMarked=' + isBookmarked + '&count=' + this.count + '&isPrevious=' + isPrevious + '&sinceId=' + sinceId;

            }
            else {
                dataurl = this.baseUrl + 'company/' + catId + '/abc' + '?bookMarked=' + isBookmarked + '&count=' + this.count + '&isPrevious=' + isPrevious + '&sinceId=' + sinceId;

            }

            var self = this;

            var headers = new Headers();
            headers.append('Content-Type', 'application/x-www-form-urlencoded');
            headers.append('Authorization', token);

            return Observable.timer(60000,60000)
                .switchMap(() => this.http.get(dataurl , { headers: headers, method: 'GET' }))
                .map((res: Response) => {
                    var obj = res.json();
                    return obj;
                });

        }

在組件中

this.newDataSubscription = this.testServ.getNewData(false,false).subscribe(data => {
            this.newdataArray = this.serv.newdataArray ;
        })

問題是每次執行計時器時都會擊中相同的URL。我想根據獲取的新數據更新URL中的sinceId。

因此,每次計時器執行sinceSinceId必須是數組的第0個元素。

請指導

看起來像是this.myArray是您的ID的來源以及您想在請求中包括的ID。

getNewData() {    
    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    headers.append('Authorization', token);

    return Observable.timer(60000,60000)
        .switchMap(() => {
            this.myArray.forEach(e => {
                // you can avoid too many vars, they are here just with purpose of clarification
                const sinceId = e.userdataId;
                const dataurl = buildUrl(e.userdataId);
                return this.http.get(dataurl , { headers: headers, method: 'GET' }) ;
            });
        })
        .map((res: Response) => {
            var obj = res.json();
            return obj;
        });
}

buildUrl(sindeId) {
    const catId = this.serv.getSelectedCategory();
    let dataurl = '';

    if (catId < 0) {
        dataurl = `${this.baseUrl}?bookMarked=${isBookmarked}&count=${this.count}&isPrevious=${isPrevious}&sinceId=${sinceId}`;
    }
    else {
        // be careful here, you are hardcoding '/abc'
        dataurl = `${this.baseUrl}company/${catId}/abc?bookMarked=${isBookmarked}&count=${this.count}&isPrevious=${isPrevious}&sinceId=${sinceId}`;
    }

    return dataurl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM