这可能是一个经典问题,但我很难找到合适的答案。
var total_debit = {};
_.each(somearray, function(x) {
if(!total_credit[b.currency]) {
total_credit[b.currency] = 0;
}
// total_debit["usd"] HAS BEEN INITIALIZED!
total_debit["usd"] += x
});
_.each(total_debit, function(td) {
// do some stuff
});
问题是第二个_.each不是迭代的,考虑到total_debit仍然是空的。
我尝试使用Promise,但我可能以错误的方式实现了它,因为它无法正常工作。
如果有人能够引导我以正确的方式实施针对此特定用例的承诺,我将永远感激。
答案 0 :(得分:1)
问题是第二个
_.each
没有迭代,考虑到total_debit
仍然是空的。
该阵列中确实没有任何内容。它的length
仍为零。唯一的问题是它现在具有.usd
属性(来自x
的累计somearray
)。
问题是你在这里abusing arrays。下划线检测到您正在使用数组,并尝试对其进行迭代(从0
到.length
的所有整数键)。但是没有这样的属性。
只需使用一个对象(var total_debit = {};
),下划线就会将其视为" map"集合类型,枚举所有键,包括.usd
。
我尝试使用Promise,但我可能以错误的方式实现了它,因为它无法正常工作。
绝对没有理由在这里使用承诺。您的代码中没有任何内容(至少在您已经显示的部分中)是异步的。