【发布时间】:2016-06-22 00:30:31
【问题描述】:
我是新的承诺,任何人都可以帮忙
这里的承诺是随机解决的,如何在完整循环执行时从循环中解决最后一个承诺
这里假设 this.selectedValues 有 4 个值,但有时它只更新三个值,有时它更新所有值(4),这是来自 promise 的问题
var promise;
private values: Object[] = [];
_.each(this.selectedValues, (selectedValue) => {
promise = that.valueService.getValuesForName(selectedValue).then((pg) => {
values.push({
Id: pg.Id,
Name: pg.Name,
Description: pg.Description,
Policies: pg.Policies
});
});
});
if (promise !== undefined) {
promise.then(() => { // i want to call promise only once for last index
var data: Object = {
Id: that.id,
Name: name,
Description: description,
Values: values
};
that.updateEdit(data, name);
});
【问题讨论】:
-
查看 $q 服务的 all() 方法。它接受一个承诺的数组或散列,并返回一个承诺,当所有承诺都已解决时,该承诺将解决。如果任何一个 Promise 被拒绝,$q.all() 会立即拒绝。
标签: javascript jquery angularjs typescript promise