gpt4 book ai didi

javascript - command/comply、listento/trigger、request/reply 之间的 Marionette 区别

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

我正在处理一些遗留代码,遇到了 3 种类似的触发事件结构

  1. 命令/遵守
    • 触发器:.command('update:mySetting', newSetting);
    • 句柄:.comply('update:mySetting', myCallback);
  2. 收听/触发
    • 触发器:.trigger('change');
    • 句柄:.listenTo(myModel, 'change', myCallback);
  3. 请求/回复
    • 触发器:.request('change');
    • 句柄:.reply('change', myCallback);

这些事件之间有什么区别,我应该在什么时候使用它们?

谢谢

注:我不确定是不是都来自 Marionette

最佳答案

https://github.com/marionettejs/backbone.radio

当您需要在发出请求时返回值时使用回复。

例如

Radio.channel('global').reply('something', function() { return 'something';});

// can also be
// Radio.channel('global').reply('something', 'something');


//... somewhere else in the code base

// someValue = 'something'
var someValue = Radio.channel('global').request('something');

您不必通过请求/回复返回任何内容,只需将其用作运行函数的方式即可。这样做将使它像 command/comply 一样工作,从而不需要 command/comply。

一个请求可以有一个回复,因此重新定义一个回复将覆盖最后一个定义。是一对一的,有回复就有对应的请求。

// before
Radio.channel('global').reply('something', function() { return 'something';});

// somewhere else, it gets changed
Radio.channel('global').reply('something', 'not something');

自行决定进行更改。

trigger/listenTo 是典型的事件系统。

触发器可以从代码中的任何位置发出事件。

listenTo 允许许多监听器监听该事件以在触发时执行所需的操作。

Radio.channel('global').trigger('myEvent');

// somewhere in the code

view1.listenTo(Radio.channel('global'), 'myEvent', function() {
// do something
});

// somewhere else in the code

view2.listenTo(Radio.channel('global'), 'myEvent', function() {
// also do something
});

关于javascript - command/comply、listento/trigger、request/reply 之间的 Marionette 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452094/

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