我使用此代码来模拟服务器延迟。
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!')
我也想知道性能差异和服务器延迟处理......
答案 0 :(得分:0)
这是一个链接,显示围绕一个数组迭代的不同函数的基准测试:https://jsperf.com/array-reduce-vs-foreach/9
这表明forEach比sum操作的reduce慢。
除此之外,您没有适当地使用reduce。您可以看到在当前操作中没有使用以前的结果。那么为什么要使用reduce?您正在混淆程序员,因为它应该使用先前的结果并将结果返回到reduce操作中。
(我想那是你发生了什么事?你从其他人那里得到了这些代码而感到困惑。对吧?所以,使用这些函数来实现它们的目的)