gpt4 book ai didi

javascript - 在 Angular 配置中使用带有 $http 和 $q 的服务/提供者

转载 作者:行者123 更新时间:2023-12-02 04:56:22 25 4
gpt4 key购买 nike

我想在 app.config 部分为每个 Controller 加载一些配置。每个 Controller 都需要加载一组不同但非互斥的数据。我不知道如何实现这一目标。

.config(['$routeProvider', '$locationProvider', 
function($routeProvider, $locationProvider){


$routeProvider
.when('/', {
templateUrl: "partials/pages/dashboard.html",
controller: "dashboard_controller",
resolve: { dash_config: 'SomeConfigD'},
})
.when('/a', {
templateUrl: "partials/pages/a.html",
controller: "a_controller",
resolve: { dash_config: 'SomeConfigA'},
})
}])

但是,我不想为 someConfigAsomeConfigD 编写单独的工厂,因为它们共享代码。我想要类似的东西,

app.factory('configFactory', function(...){
var factory = ;

function get1(){
// some $http calls here and return a promise
}

function get2(){
// some $http calls here and return a promise
}

function get3(){
// some $http calls here and return a promise
}
factory.configA = function(){
// return a promise to resolve both get1 and get2
};
factory.configD = function(){
// return a promise to resolve both get2 and get3
};
})

我该怎么做?

最佳答案

听起来您正在寻找的是$q.all,您可以阅读关于here 的内容。 .

我还做了一个fiddle使用你的工厂,虽然我在模块的运行方法中这样做,因为我不想处理创建工厂的问题。它看起来像这样:

f.configA = function(){
var get12 = $q.all([
get1().then(thenFn),
get2().then(thenFn)
]).then(function() {
console.log('both resolved');
});
return get12;
};

then 中的函数仅在两个 promise 都已解决时被调用(这发生在不同的时间,用 $timeout 模拟

现在可以重用 get 函数,希望对您有所帮助!

关于javascript - 在 Angular 配置中使用带有 $http 和 $q 的服务/提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688647/

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