gpt4 book ai didi

javascript - 返回工厂的 promise

转载 作者:行者123 更新时间:2023-12-02 15:19:09 24 4
gpt4 key购买 nike

我有一个工厂,我想在函数内返回一个 promise ,但我的 Controller 每次都会说:

Provider 'personFactory' must return a value from $get factory method.

我的工厂:

(function () {
'use strict';
angular
.module('testApp')
.factory('personFactory', personFactory);

personFactory.$inject = ['storage'];


function personFactory(storage) {

storage.getData().then(function (response) {

return {
allData: function () {
return response
}
}

});
}

})();

我的 Controller :

(function () {
'use strict';

angular
.module('testApp')
.controller('menuListController', menuListController);

menuListController.$inject = ['$scope', 'personFactory', '$rootScope'];

function menuListController($scope, personFactory) {

$scope.fromFactory = personFactory.allData();

console.log($scope.fromFactory)
}
})();

我认为我必须双重返回这两个函数,但如果这是问题所在,则无法获得正确的语法来在 Controller 中调用它。

最佳答案

你的工厂定义必须返回一些东西,这就是问题所在:

    function personFactory(storage) {

return storage.getData().then(function (response) {

return {
allData: function () {
return response
}
}

});
}

现在,我不知道这是否是您真正需要的。我通常会在工厂中返回一个函数或对象,然后使用。

通过您的方法,您将仅调用一次 getData 并直接在 Controller 中接收 promise 。

我喜欢它,现在我想起来了:)

但是!看看你的其余代码,我认为你毕竟不希望得到 promise 。无论如何,你都必须做这样的事情:

personFactory.then(function () {
$scope.fromFactory = data.allData();
});

这再次让我认为您不需要做所有数据业务。这就是我要做的:

function personFactory(storage) {
return storage.getData();
}

personFactory.then(function (response) {
$scope.fromFactory = response;
});

看起来怎么样?

关于javascript - 返回工厂的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com