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);
});
});
现在有更好的方法来编写上面的代码,但希望它能为您充分解释链接。
通过这个 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);
});
});
现在有更好的方法来编写上面的代码,但希望它能为您充分解释链接。