[英]Lodash - can you continue chaining after variable declaration?
這段代碼:
var foo = [1, 2, 3],
bar = _.chain(foo)
.map(number => number * 2);
console.log(bar.value());
bar.tap(numbers => {
numbers.push(10000);
});
console.log(bar.value());
10000
不會添加到bar.value()
。 但是,如果我在實際可變鏈期間將分接頭移動到鏈上,則可以正常工作。 我確定這與調用tap
的上下文有關,但是有人可以解釋嗎? 似乎最好先初始化一個鏈,然后再修改它。 謝謝!
Bin進行演示: http : //jsbin.com/kidomeqalo/edit?html,js,console
jsbin.com上的JS Bin
只需添加一個bar.tap();
不會改變任何東西。 您實際上需要將其包括在鏈中:
bar = bar.tap(numbers => {
numbers.push(10000);
});
console.log(bar.value());
要么
console.log(bar.tap(numbers => {
numbers.push(10000);
}).value());
最重要的是,您不應使用tap
來執行副作用。 而是使用bar.concat(10000).value()
或類似的方法,這可以清楚地表明,它以一種功能性的方式創建了一個新的結果,而不是變異任何東西-當對序列進行延遲計算時,這尤其令人困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.