gpt4 book ai didi

javascript - 如何将 arg 传递给 lodash 的 once 函数内的函数?

转载 作者:行者123 更新时间:2023-11-30 19:30:28 26 4
gpt4 key购买 nike

所以我正在调用一个调用 lodash 的 once 函数的函数:

  if (isPageTwo) {
sendSegmentData(sendEnhancedTrackEvent);
}

我在这里定义了函数:

const pageTwoSegmentEvent = (sendEnhancedTrackEvent) => {
const enhanceableData = {
name: 'Page loaded',
properties: {
...defaultProps,
cid: getCid(),
epid: getEpid(),
name: 'ReviewExperienceModernDoubleStep'
}
};
sendEnhancedTrackEvent(enhanceableData);
}
const sendSegmentData = (sendEnhancedTrackEvent) => {
once(() => {
pageTwoSegmentEvent(sendEnhancedTrackEvent);
});
}

我正在尝试将 sendEnhancedTrackEvent 回调函数传递给 pageTwoSegmentEvent 函数,但我想我尝试通过 once 函数传递它的方式 pageTwoSegmentEvent 永远不会被调用。有谁知道如何做到这一点?

最佳答案

_.once() 方法接受一个函数 (func),并返回一个调用包装函数 (func) 一次的函数。根据文档:

The func is invoked with the this binding and arguments of the created function.

这意味着您传递给新函数的任何参数都将传递给包装的func

在你的情况下:

  1. sendSegmentData 具有 sendEnhancedTrackEvent 参数
  2. sendSegmentData 被调用时,它会调用 once(() => { pageTwoSegmentEvent(sendEnhancedTrackEvent); });,这将创建一个新函数。不返回或调用新函数。

要创建sendSegmentData,请直接在pageTwoSegmentEvent 上调用一次。这将返回一个新函数,该函数会将 gets 中的任何参数传递给 pageTwoSegmentEvent

示例:

const { once } = _

const pageTwoSegmentEvent = (sendEnhancedTrackEvent) => console.log(sendEnhancedTrackEvent)

const sendSegmentData = once(pageTwoSegmentEvent)

sendSegmentData('1')

sendSegmentData('2')

sendSegmentData('3')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

关于javascript - 如何将 arg 传递给 lodash 的 once 函数内的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484350/

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