同步多个Js请求
Syncronization of Multiple Js requests
我在AngularJS中尝试同步多个异步请求时遇到一些问题。我要解释一下我有什么,我需要什么。
- 用户有许多站点
- 每个网站都有许多订阅
- 每个站点都有许多交易
- 每个事务都与一个订阅相关联
我通过第三方API获取订阅和交易。它们中的每一个都返回和具有关联Id的元素数组。因此,我需要为每个数组的每个元素发出一个请求,并将两个结果关联起来。
我不知道该怎么办,也不知道该如何处理。任何帮助都将不胜感激。
$q.all([
PaymentService.getTransactions(profile.payment.account_code),
SiteService.getAll(),
PaymentService.getUserSubscriptions(profile.payment.account_code)
]).then(function (data) {
var transactions = data[0];
var user_sites = data[1];
var user_subscriptions = data[2];
// returns site-by-site
angular.forEach(user_sites, function (site) {
SiteService.loadSite(site.$value).then(function (loaded_site) {
loaded_site.transactions = [];
loaded_site.subscriptions = [];
angular.forEach(user_subscriptions, function (subscription) {
console.log('SUBSCRIPTION: ', subscription);
if ( subscription.uuid === loaded_site.recurly_subscription_uuid ) {
loaded_site.subscriptions.push(subscription);
}
});
angular.forEach(transactions, function (transaction) {
if ( transaction.subscription ) {
if ( getSubscriptionId(transaction.subscription.$.href) === loaded_site.recurly_subscription_uuid ) {
loaded_site.transactions.push(transaction);
}
}
});
$scope.sites.push(loaded_site);
});
});
})
您可以重新应用$q.all
技术:
$q.all([
PaymentService.getTransactions(profile.payment.account_code),
SiteService.getAll(),
PaymentService.getUserSubscriptions(profile.payment.account_code)
]).then(function (data) {
var transactions = data[0];
var user_sites = data[1];
var user_subscriptions = data[2];
var promises = [];
angular.forEach(user_sites, function (site) {
promises.push(SiteService.loadSite(site.$value));
});
$q.all(promises).then(function(loaded_sites) {
angular.forEach(loaded_sites, funciton(loaded_site) {
loaded_site.transactions = [];
loaded_site.subscriptions = [];
angular.forEach(user_subscriptions, function (subscription) {
console.log('SUBSCRIPTION: ', subscription);
if ( subscription.uuid === loaded_site.recurly_subscription_uuid ) {
loaded_site.subscriptions.push(subscription);
}
});
angular.forEach(transactions, function (transaction) {
if ( transaction.subscription ) {
if ( getSubscriptionId(transaction.subscription.$.href) === loaded_site.recurly_subscription_uuid ) {
loaded_site.transactions.push(transaction);
}
}
});
$scope.sites.push(loaded_site);
});
});
});
相关文章:
- 有没有一种方法可以防止img get请求使用css或js发生
- 在openshift node js应用程序中获取请求
- node.js请求数据事件未在CORS ajax调用中触发
- 关于在node.js中请求
- 在Hapi.js Restful API中了解请求IP
- 回复'js'仅当请求有错误时(否则使用html)
- 如何判断请求/承诺是否需要超过5秒才能完成,angular js
- 请求js中的回调问题
- Chrome没有请求JS源地图,但Firefox请求
- 获取请求JS文件的网站的域
- 快递中的客户端 DEL 请求.js
- node.js请求js与curl相比失败
- 从请求.js请求方法返回结果
- 请求.JS和节点.js数据问题
- 从 Backbone 发送发布请求.js返回跨域错误
- 对服务器节点的请求.js
- 节点 - 请求.js仅在服务器上重置错误
- 脚本自己发出错误的请求(JS - TheMovieDb api)
- 如何阻止浏览器在IMG上发送额外请求.JS中的SRC变化
- 变量未在请求 JS 的数据事件中更新