我在解决使用q.all美元的promise时遇到了问题,有人能帮我吗?
当我有一个promise时,以下几点很好:
var dashlettePromise = DashboardsDataService.getTabDetails(dashboardData);
dashlettePromise.then(function(data) {
var template = '<div class= "allChartsDiv">';
for (var dashVar = 0; dashVar < data.tabDetails.length; dashVar++) {
var dashletteId = data.tabDetails[dashVar].dashletteId; // Added
....
}
}, function(error) {
alert(error);
}, function(progress) {
// report progress
});
但是我需要进行多个ajax调用,所以我使用了$q.all如下所示:
var promises = [];
angular.forEach(dashboardslayoutArray, function(dashboardslayout) {
dashboardData.dashletteBeansList = [];
dashboardData.dashletteBeansList[0] = dashboardslayout;
var dashlettePromise = DashboardsDataService.getTabDetails(dashboardData);
promises.push(dashlettePromise);
});
现在我需要一个接一个地解析$q中的所有promise,就像我解析的单promise一样,如上所示。因此,我使用了下面所示的代码,但它没有按预期工作。我开始怀疑我在$q.all(promise)中使用的逻辑来解决promise。这是正确的方法吗?或者有人能提出更好的方法来解决$q.all中的promise吗?
$q.all(promises)
.then(function(allData) {
// all promises were resolved here
angular.forEach(promises, function(eachPromise) {
eachPromise.then(function(data) {
for (var dashVar = 0; dashVar < data.tabDetails.length; dashVar++) {
var dashletteId = data.tabDetails[dashVar].dashletteId; // Added
var axisType = data.tabDetails[dashVar].axisType;
.....
}
}, function(error) {
alert(error);
})
})
});
问题在于,$q.all
不会在已解决状态下返回promise本身,而是直接返回其值。因此,尽管您希望在$q.all
调用中得到promise,但您得到的是值。为了规避这一点,您可以在结束时访问promise。
尝试调整代码以处理值,而不是中的promise。所有
呼叫:
$q.all(promises)
.then(function(allData) {
// all promises were resolved here
allData.forEach(function(data) {
// no `then` needed here
for (var dashVar = 0; dashVar < data.tabDetails.length; dashVar++) {
var dashletteId = data.tabDetails[dashVar].dashletteId; // Added
var axisType = data.tabDetails[dashVar].axisType;
.....
}
});
});
因此,一般来说,您的方法是有效的(很好),但可以更好:)
还请注意,进度事件可能应该避免,而不是未来的证据。
null 我正在用trie把字典里的所有单词都倒置起来。然后,为了解决这些查询,我按照以下方式进行:- 如果trie中有单词,请将其从trie中删除。 现在从根遍历trie,直到查询字符串中的字符与trie值匹配的点。让最后一个字符匹配的点为p。 现在从这一点P开始,我使用DFS遍历trie,在遇到叶节点时,将形成的字符串推送到可能的结果列表。 现在,我将从该列表返回词典中最小的结果。 当我在SP
我从Codibility的代码测试练习中发现了以下问题: 给出了一个由N个不同整数组成的零索引数组A,该数组包含范围[1...(N 1)]的整数,这意味着正好缺少一个元素。 你的目标是找到缺失的元素。 编写一个函数: 类解决方案{公共int解决方案(int[]A);} 即,给定一个索引为零的数组A,返回缺失元素的值。 例如,给定一个数组: A[0]=2A[1]=3A[2]=1A[3]=5 函数应该
问题内容: 我有2个函数,都返回诺言: 现在,我有了一个清单,在这两个诺言得到解决后,我想立即更新 已解决的主题应如下所示 问题答案: 创建一个承诺,当您通过的所有承诺均被拒绝或 任何 拒绝时,该承诺都会自动解决。 如果像您一样将其传递给数组,则处理成功解析的函数将收到一个数组,其中每个项目都是针对相同索引的诺言的分辨率,例如: 我个人认为传递对象更具可读性,这样您就可以在处理程序中获得一个对象,
问题内容: 我注意到Java浮点精度的一些问题 我不仅有问题,而且也有问题。 有人可以解释幕后发生的事情吗,我们如何获得准确的数字?处理这些问题时正确的方法是什么? 问题答案: 问题是精度有限。它不能完全代表。(当然,也是如此:它具有更高的精度,但仍然是有限的。) 使上述问题更加明显的另一个问题是a 而不是a ,因此您将被提升为执行减法的操作,当然,此时系统无法恢复a所丢失的精度。 本来 可以代表
我在尝试连接magento v2时遇到此错误。0.2 SOAP API。 我正在本地主机上运行 我尝试了大多数解决方案,但没有一个奏效。 安装SOAP ssl存在于php.ini文件 在文件中获取内容不返回任何内容
问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正