【问题标题】:Ember 2, which differences in this code?Ember 2,这段代码有哪些不同?
【发布时间】:2017-12-08 10:35:22
【问题描述】:

我正在使用此代码来模拟我的获取的服务器延迟。

let promises = [];
child.get('authors').forEach(author => author.get('books').forEach(book => {
  var promise = new RSVP.Promise(function (resolve, reject) {
    let time = (Math.floor(Math.random() * 10) + 1) * 1000;
    Ember.run.later(() => {
      favoriteList.pushObject(book);
      resolve();
    }, time);
    if (somethingWrong) {
      reject(error);
    }
  });
  promises.push(promise)
}));

RSVP.all(promises).then(function () {
  console.log('Yoo! Finally!')
}).catch(function (error) {});

我想知道(除了Ember.run.later(),我用它来模拟我所有“获取”的服务器延迟)下面的代码是否存在差异?

child.get('authors').forEach(author => author.get('books').forEach(book => {
  favoriteList.pushObject(book);
}));

console.log('Yoo! Finally!')

和这段代码有什么区别?

child.get('authors').forEach(author => author.get('books')
  .reduce((accumulator, book) => {
    favoriteList.pushObject(book);
  })
);
console.log('Yoo! Finally!')

我也想知道性能差异和服务器延迟处理...

【问题讨论】:

    标签: javascript arrays ember.js functional-programming ember-data


    【解决方案1】:

    这是一个链接,显示了围绕不同函数迭代一个数组的基准测试:https://jsperf.com/array-reduce-vs-foreach/9

    这表明对于求和运算,forEach 比 reduce 慢。

    除此之外,您没有正确使用 reduce。您可以看到您没有在当前操作中使用先前的结果。那么为什么要使用reduce呢?您使程序员感到困惑,因为预计它会使用先前的结果并在 reduce 操作中返回结果。

    (我猜这就是发生在你身上的事情?你从别人那里得到了这段代码并且感到困惑。对吧?所以,将这些函数用于它们的设计目的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多