强调_.each和承诺

时间:2015-06-01 19:19:02

标签: underscore.js promise

这可能是一个经典问题,但我很难找到合适的答案。

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,但我可能以错误的方式实现了它,因为它无法正常工作。

如果有人能够引导我以正确的方式实施针对此特定用例的承诺,我将永远感激。

1 个答案:

答案 0 :(得分:1)

  

问题是第二个_.each没有迭代,考虑到total_debit仍然是空的。

该阵列中确实没有任何内容。它的length仍为零。唯一的问题是它现在具有.usd属性(来自x的累计somearray)。
问题是你在这里abusing arrays。下划线检测到您正在使用数组,并尝试对其进行迭代(从0.length的所有整数键)。但是没有这样的属性。 只需使用一个对象(var total_debit = {};),下划线就会将其视为" map"集合类型,枚举所有键,包括.usd

  

我尝试使用Promise,但我可能以错误的方式实现了它,因为它无法正常工作。

绝对没有理由在这里使用承诺。您的代码中没有任何内容(至少在您已经显示的部分中)是异步的。