Javascript Angular是否有包含所有当前承诺的预定义对象?

Javascript Angular是否有包含所有当前承诺的预定义对象?,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我有一个控制器,除了一个函数(我们称之为thatOneFunction())之外,我可以允许所有函数异步运行。原因是OneFunction()依赖于大约10个已解决的承诺,否则它在需要执行的范围内没有数据 我在网上看到了多个例子,说明了如何具体地抓住单个GET/查询/服务的承诺,但我没有看到的是一种检查所有承诺一次都已解决的方法——也许是通过一个我不知道的角度状态变量?比如: var currentPromises = $state.promises; currentPromises.then(

我有一个控制器,除了一个函数(我们称之为thatOneFunction())之外,我可以允许所有函数异步运行。原因是OneFunction()依赖于大约10个已解决的承诺,否则它在需要执行的范围内没有数据

我在网上看到了多个例子,说明了如何具体地抓住单个GET/查询/服务的承诺,但我没有看到的是一种检查所有承诺一次都已解决的方法——也许是通过一个我不知道的角度状态变量?比如:

var currentPromises = $state.promises;
currentPromises.then(thatOneFunction());
或者,如果还没有一个内置变量,是否有一种方法可以动态生成当前所有未兑现承诺的列表,然后我可以使用。then()?这将有很大帮助,因为在这个应用程序中,我将有很多页面具有这种结构

我已经尝试/正在做的事情“ 到目前为止,我有一个解决办法,但它需要一些硬编码,我不想继续。它基于插入对函数的调用,检查该函数已被调用多少次的计数器,将其与应调用该函数的承诺次数进行比较(在计算控制器中的承诺后进行硬编码),如果它已经完成了所有必需的承诺,则调用thatOneFunction()

谢谢你的帮助/指点

我的代码示例位(更改了实名/变量):

控制器

$scope.runAfterAllPromises = function() {
               *code dependedent on all promises here*
}

MySvc.loadList(function (results) {
        $scope.myList = results;
    });


$scope.runAfterAllPromises();
服务

app.service("MySvc", ['$resource', function ($resource) {


    this.loadList = function (callBackFunction) {
        var stateRes = $resource('/api/ListApi');
        stateRes.query(function (ListResults) {
            if (callBackFunction && typeof (callBackFunction) === 'function') {
                callBackFunction(ListResults)
            };
        })

如果有帮助的话,你可以连锁承诺

比如说:

var promises = [];
promises.push(yourPromise1());
promises.push(yourPromise2());
promises.push(yourPromise3());
$q.all(promises).then(function(){ ...});

这就是你的意思吗?

简短的回答:不,不存在这样的物体

现在,如何实现您想要实现的目标:

var allPromise = $q.all([promise1, promise2, promiseN]);
allPromise.then(success).catch(error);
编辑:在你的“一个男人可以做梦的评论”之后,我想添加以下内容:

您可以重写$q.defer函数,跟踪创建的所有延迟对象,并获得它们的承诺


显然,这可能会产生一些延迟问题,但从未解决过,这可能是实现所需功能的最简单方法。如果您想一直这样做,可以看看Angle decorators,它为扩展Angle providers提供了一个功能框架

我严重怀疑是否存在这样的对象。promises与任何特定的状态或范围无关,可以在它们之间传递。@ODelibalta现在正在查看它-谢谢!是的,这是我在其他网站上遇到的最接近的东西,所以它非常接近我所知道的我可以做的事情。我只是想知道angular是否以某种方式以$state跟踪它。如果是这样,它将然后,ld不必单独推送promises数组,只需调用一些跟踪当前未兑现承诺的内置数组。希望这是有意义的!你知道当我使用回调函数而不是直接调用api调用服务时,如何实现这一点吗?我很难弄清楚这一点。你知道吗r服务返回承诺?如果您在Q:)中显示一些代码,可能会更容易些不,它不是-在我的控制器中,当我调用服务时,我传递一个回调函数,该函数本质上为API查询的结果设置$scope.controllerVariable。当API查询执行时,它将其结果推送到回调函数。当我推回结果时,我是否应该包括承诺,然后像在中那样推送该承诺你的答案是什么?如果我在我的主控制器中这样做,因为承诺数组在实际实现之前不会有承诺。然后运行,因为它可能在阵列中没有任何承诺吗?我现在添加了一个粗略的示例,没有我的工作。(想象一下,多个服务做同样的事情)