簡體   English   中英

Lodash-變量聲明后可以繼續鏈接嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM