【问题标题】:underscore _.each and promise下划线 _.each 和 promise
【发布时间】:2015-06-02 04:27:25
【问题描述】:

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

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,但我可能以错误的方式实现它,因为它不起作用。

如果有人能引导我找到针对这个特定用例实现 Promise 的正确方法,我将不胜感激。

【问题讨论】:

  • 看起来你没有关闭第一个 _.each();你的问题也不完全清楚。也许这篇文章会有所帮助stackoverflow.com/questions/25671760/…
  • 在stackoverflow上写得不好,但在我的代码中写得正确,我更正了,谢谢,还有什么想法吗?
  • 您确定要使用数组吗?如果您使用命名索引和数组,JavaScript 会将数组重新定义为标准对象。那么,为什么不直接使用 obj.也许一个 plunkr 或 fiddle 展示你正在尝试完成的事情会有所帮助。?
  • 你到底想做什么?

标签: underscore.js promise


【解决方案1】:

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

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

我尝试使用 Promise,但我可能以错误的方式实现它,因为它不起作用。

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

【讨论】:

  • 数组已经初始化我指定清楚了。我修改了代码给你看。
  • 是的,无论如何(你的问题没有编辑?),但它仍然没有用作数组。
  • 刚刚编辑了对不起无论它用作数组或对象,它都不会改变我的问题。我同意从概念上讲我应该声明一个对象,但它根本不会改变问题。
  • @FrançoisRichard:好吧,如果你将它声明为一个对象,那么这可能不会改变问题,但实际上会解决它。
  • 哇 O_o 但是为什么呢? _.each 正在使用 array 和 object ,只是测试了它,它没有改变任何东西,我用对象声明更新了帖子
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多