gpt4 book ai didi

javascript - 将 lodash every() 函数作为参数传递给 Rx.JS map() 运算符

转载 作者:行者123 更新时间:2023-11-30 15:05:16 25 4
gpt4 key购买 nike

为什么这两段代码的工作方式不同?

const a = new Rx.Subject;
const b = new Rx.Subject;
a.combineLatest( b ).map( merge => _.every( merge ) ).subscribe( r => console.log( "r:", r ) );
a.next( true );
b.next( true );

输出:r: true

const a = new Rx.Subject;
const b = new Rx.Subject;
a.combineLatest( b ).map( _.every ).subscribe( r => console.log( "r:", r ) );
a.next( true );
b.next( true );

输出:r: false

这两个在句法上不是等价的吗?

最佳答案

发布问题被临时删除之前写的答案。

Lodash every 接受 2 arguments (实际上有 3 of them )。

数组 map 回调有 3 parameters .

考虑到 map 预计仅使用第一个参数(值)调用 everyevery 调用时使用的参数不计算在内上,这改变了它的行为。

通常将现有函数作为回调提供,但要谨慎。仅当确定函数仅接受 1 个参数或其余参数不影响结果时才可接受,例如:

const stringArray = array.map(String);

如果对此有疑问,则应改用包装函数,例如:

// will produce unexpected results because parseInt has 2 params
// const numberArray = array.map(parseInt);
const numberArray = array.map(str => parseInt(str));

关于javascript - 将 lodash every() 函数作为参数传递给 Rx.JS map() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com