首页 > 解决方案 > web服务被多次调用

问题描述

我有一个被调用 3 次的网络服务,但我不知道为什么?

这是网络服务WLOLBLOK。我想只调用一次这个网络服务。

在此处输入图像描述

文件.service.ts

getInstrumentBlockDetail(portfolioID, svm) {
    var payload = {
        "HEADER": this.sh.getHeaderForRequest(),
        "CUSTOMER": {
            "REFERENCE": portfolioID,
            "ID": "",
            "INTITULE1": "",
            "INTITULE2": "",
            "ACCESS": 0,
            "SERVICE": 0,
            "DEFAULTPTF": 0
        },
        "SVM": svm
    }
    return this.http.post < any[] > (this.getBaseUrl() + `/WLOLBLOK`, payload);
}

文件.ts

ngOnInit() {
    this.svm = this.AR.snapshot.paramMap.get('svm');
    this.currentPortfolio = this.shrd.getData('currentPortfolio');
    this.pageTitle = "";
    this.initiate();
}



getBlocked() {
    return this.api.getInstrumentBlockDetail(this.currentPortfolio, this.svm)
        .pipe(
            map((response: {}) => {
                this.prepareDataForBlocked(response);
            })
        );
}


prepareDataForBlocked(res) {
    if (res.RETURNCODE == 'OKK00') {
        this.spinners.blockDetails = false;
        this.pageTitle = " " + res.BLOCAGES.INFOTITRE.LABEL + " (" + res.BLOCAGES.INFOTITRE.PLACELABEL + ")";

    }
}


getBlocage() {
    return this.api.getInstrumentBlockDetail(this.currentPortfolio, this.svm)
        .pipe(
            map((response: {}) => {
                this.prepareDataForBlocage(response);


            })
        );
}


prepareDataForBlocage(response) {
    this.spinners.blockDetails = false;
    if (response['RETURNCODE'] == "OKK00") {

        this.myList = response['BLOCAGES']['BLOCAGE']

            .filter(blocage => blocage['QTE'] != 0)
            .map(blocage => ({
                quantity: blocage['QTE'],
                raison: blocage['RAISON_LIB'],
                update: blocage['DAT'],
                rem1: blocage['REM1'],
                rem2: blocage['REM2']
            }));


        let totalQt = response['BLOCAGES']['QTEBLOQTOT'];
        this.statusLine = {
            total: totalQt
        };

    }
}


initiate() {
    this.getBlocked().subscribe(res => {
        this.spinners.blockDetails = true;
        this.getBlocage()
            .pipe(
                concatMap(res => this.getBlocage()),
            ).subscribe()
    })
}


goBack() {
    this.helpers.goBack();
}

请问我该如何解决这个问题?

太感谢了。

标签: javascriptangularweb-services

解决方案


对 RxJs 运算符使用 share observable。


推荐阅读