Return 多个数据独立资源承诺

Return multiple data independent resource promises

通过这个 link 我找到了一个 returning 多个资源承诺的例子(第 44-52 行):

http://embed.plnkr.co/LZad4ZyEYjrbKiTPbAwu/script.js

var GistsData = Gists.query();
var MetaData = Meta.get();

GistsData.$promise.then(function(response) {console.log('Resource 1 data loaded!')});
MetaData.$promise.then(function(response) {console.log('Resource 2 data loaded!')});

return $q.all([GistsData.$promise, MetaData.$promise]);

在我的例子中,第二个资源 API 调用(元数据)依赖于第一个资源 API 调用(GistData)returned 的特定值。

我想弄清楚如何在 MetaData 资源中使用由 GistData return 编辑的值(例如 ID)?像这样:

var MetaData = Meta.get({ id : GistsData.id });

我想在具有 ID 的元数据 return 做出承诺后 return 做出承诺。

谢谢

首先,我建议您多阅读一些有关 promises 的内容,因为它们很棒 :)

至于你的问题,你想做的是承诺链。请注意您如何为每个资源承诺使用 .then() 函数。 then() 在 promise 解决后被调用,在您的情况下是查询返回时。

因此,不要 运行 每个独立,而是使用第一个承诺的 then() 函数然后开始 运行 第二个。例如:

return Gists.query().$promise.then(function(response){
    // Gists has finished and the data it returned is in response
    // Now run your second query, using the response from the first

    return Meta.get({ id : response.id }).$promise.then(function(nextResponse){

        // Now nextResponse will contain the result of Meta.get(), having used the id that returned from the first response
        console.log(nextResponse);
    });
});

现在有更好的方法来编写上面的代码,但希望它能为您充分解释链接。