【发布时间】:2018-03-11 23:27:39
【问题描述】:
我正在阅读:https://hackernoon.com/functional-javascript-resolving-promises-sequentially-7aac18c4431e
作者在一节中谈到了用
替换第二个箭头函数Promise.resolve([])
.then(all => funcs[0].then(result => all.concat(result)))
这个
Promise.resolve([])
.then(all => funcs[0].then(Array.prototype.concat.bind(all)))
我无法理解这是如何工作的...返回的结果是否作为参数隐式添加到 concat 函数中?
【问题讨论】:
-
当调用一个期望函数作为参数的函数时,您可以编写一个新函数内联,例如
foo(() => {...})或传递对现有函数的引用,例如foo(myCallback)。此示例使用bind()函数来执行后者。但我个人看不出在这种情况下使用bind()的优势;通常箭头函数更清晰,没有性能下降(至少现在是这样)。 -
从技术上讲,
bind()调用不是对现有函数的引用,而是返回一个新函数,但它是相同的一般思想 - 使用现有函数而不是内联创建新函数。
标签: javascript ecmascript-6 bind arrow-functions