Обещание, вызванное дважды в AngularJS

#angularjs #promise #angular-promise #angularjs-service

#angularjs #обещание #angular-обещание #angularjs-service

Вопрос:

На самом деле выполнение моего обещания начинается здесь в if условии, что все работает нормально, но проблема в том, что вызов службы вызывается дважды, функция opmodel.concactDetails вызывается дважды.

Я вызываю concatDetails один раз возвращаю обещание, которое оно вызывает, getPortfolio какую службу, но я не могу понять, почему оно вызывается дважды

 model.gridevents = function () {                            
    if (!opmodel.filterData.portfolioID) {
        opmodel.concactDetails(true)
        .then(model.setportifolioDetails)
        .then(model.getDrawsDetails);
    }
    gridPagination.setGrid(grid);
    gridTransform.setGridModel(grid);
    gridTransform.setGridPaginationModel(gridPagination);
    gridPagination.setData(gridPaginationConfig);
    return model;
};

model.setportifolioDetails = function (resp) {
    opmodel.setportifolioDetails(resp);
    model.getDrawsDetails();
};

model.getDrawsDetails = function () {
    model.setBusyIndicator(true);
    svc.getDrawsDetails(opmodel.filterData)
        .then(model.bindDraws, model.error);
};
  
 model.concactDetails = function (flag) {
    model.flag = flag;
    var data = {
        data: {
            contact: session.get('contact'),
            portalsettings: session.get('portalsettings'),
            companyName: session.get('companyName'),
            epayEnabled: session.get('epayEnabled'),
            prodName: session.get('prodName'),
            showProductName: session.get('showProductName'),
            userRole: session.get('userRole'),
            statementPeriodCustom: session.get('statement_period_custom'),
        }
    };
    return model.updateFilterDetails(data);
};
  
 model.updateFilterDetails = function (resp) {
    model.filterData = {
        setDefault: true,
        startDate: moment(resp.data.contact.portalDefaultStartDate).format("MM/DD/YYYY"),
        endDate: moment(resp.data.contact.portalDefaultEndDate).format("MM/DD/YYYY"),
        filterStartDate: moment(resp.data.contact.portalDefaultStartDate).format("YYYY-MM-DD"),
        filterEndDate: moment(resp.data.contact.portalDefaultEndDate).format("YYYY-MM-DD"),
        includeUnpaid: false,
        dateRangeFunction: resp.data.contact.portalDefaultFilterPeriod ?
            (resp.data.contact.portalDefaultFilterPeriod === "customPeriod()" amp;amp; resp.data.contact.customPeriodLabel === "None") ?
            "thisMonth()" : resp.data.contact.portalDefaultFilterPeriod : 'thisMonth()',
        customPeriodLabel: resp.data.contact.customPeriodLabel,
        portfolioID: resp.data.contact.portalDefaultPortfolioID,
        portfolioId: resp.data.contact.portalDefaultPortfolioID,
        epayInfo: resp.data.contact.epayInfo,
        epayEnabled: resp.data.epayEnabled,
        allowOwnerChangeBankInfo: resp.data.portalsettings.allowOwnerChangeBankInfo,
        showRealTimeData: resp.data.portalsettings.showRealTimeData,
        statementPeriodCustom: resp.data.statementPeriodCustom,
    };
    model.contactDetails = resp.data;
    if (!model.flag) {
        if (resp.data.portalsettings.showRealTimeBalances !== undefined amp;amp; resp.data.portalsettings.showRealTimeBalances !== true) {
            state.go("ownerPortal.alternateDashboard");
        }
    }
    model.flag = undefined;
    return model.portfolioData();
};
  
 model.setportifolioDetails = function (resp) {
     if (resp.data.length > 0) {
        model.portfolios = resp.data;
        model.filterData.portfolioID = model.filterData.portfolioID ?
            model.filterData.portfolioID : resp.data[0].id;
        model.filterData.portfolioId = model.filterData.portfolioID;
        model.portfolioName = _.find(resp.data, {
            id: model.filterData.portfolioId
        }).name;
     }
};
  

Комментарии:

1. Не могли бы вы вместо этого создать JSFiddle или CodePen? Спасибо!

2. Это concat или contact ?

3. Где находится opmodel.concactDetails функция? Это то же самое, что model.concactDetails ? Есть две model.setportifolioDetails функции. Наличие двух функций с одинаковым именем очень сбивает с толку.