javascript - 返回 Promise 时出错,出现错误,因为 .then 不是 Angular JS 中的函数

标签 javascript angularjs promise angular-promise

我收到错误,因为 modifyProduct.then 不是函数,我读过一些文章,它说因为我没有返回任何 promise ,我如何可以实现这个,有人可以帮助我

在这里,我在 executionFromCompany 函数内调用 modifyProduct,然后在 Controller 内使用 executionFromCompany

 var app = angular.module('myApp', ["chart.js"]);
 app.factory('ProductsService', function($http) {
     function getProduct() {
         return $http.get('finalmsodetails.json').then(function(response) {
             //console.log(response.data);
             return response.data;
         });
     }

     function modifyProduct() {
         return getProduct().then(function(rawData) {
             newtest = rawData;
             //console.log('test', newtest.length);
             var lightData = rawData.map(function(item) {
                 // use Object.assign to prevent mutating original object
                 var newItem = Object.assign({}, item);
                 var lightExecutions = item.executions.map(function(d) {
                     var ld = {
                         id: d.id,
                         orderId: d.orderId,
                         executionStatus: d.executionStatus,
                         executedOn: d.executedOn,
                         executedBy: d.executedBy,
                         executedByDisplay: d.executedByDisplay,
                     };
                     return ld;
                 });
                 newItem.executions = lightExecutions;
                 return newItem;
             });
             return lightData;
         });
     }

     function executionFromCompany() {
         return modifyProduct.then(function(lightData) {
             executionByCompany = $filter('filter')(lightData.executions, function(inputs) {
                 if ((inputs.executedBy == 'a')) return inputs;
             });
             console.log(executionByCompany);
             return executionByCompany;
         });
     }
     return {
         getProduct: getProduct,
         modifyProduct: modifyProduct,
         executionFromCompany: executionFromCompany
     };
 });
 app.controller('MainCtrl', function($scope, ProductsService) {
     ProductsService.executionFromCompany().then(function(value) {
         console.log(value);
     }, function(err) {
         // Here will be if there was an error
     })
 });

最佳答案

modifyProduct 是一个函数,而不是一个对象

改变这个

modifyProduct.then

到此

modifyProduct().then

关于javascript - 返回 Promise 时出错,出现错误,因为 .then 不是 Angular JS 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46253265/

相关文章:

javascript - AngularJS + Electron : Save Data to JSON File

angular - 如何在Angular2中拒绝Promise和处理/捕获错误

javascript - 如果选中单选框,则使用 javascript 进行重定向

javascript - Firefox 的 Flash 外部接口(interface)问题

javascript - 在 JavaScript 中用另一个字符串替换一个字符串

promise - 在 Angular 2 中为模拟数据创建 Observable

javascript - 使用 bluebird 从 JSON 构建 Promise

php - 使用 JavaScript 或 PHP 的时间计数器

angularjs - angular js force.com Javascript 远程处理

angularjs - 使用 "controller as"时如何对编译模板进行单元测试?