Heim > Web-Frontend > js-Tutorial > Detaillierte Einführung in den Namespace-Ereignis-Listener nsevent (Codebeispiel)

Detaillierte Einführung in den Namespace-Ereignis-Listener nsevent (Codebeispiel)

不言
Freigeben: 2019-01-10 10:04:27
nach vorne
2772 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine detaillierte Einführung (Codebeispiel) zum Namespace-Ereignis-Listener. Ich hoffe, dass er für Sie hilfreich ist.

Der Hauptgrund für dieses Modul besteht darin, die Statusinteraktion zwischen zwei Seiten während der WeChat-Entwicklung zu überwachen.

Beispiel: SeiteA und SeiteB, SeiteA hat Favoriten und SeiteB hat die gleichen Favoriten, hören Sie zu zum gleichen Ereignis

// 收藏事件改变
nsevent.on('collectChange', () => {
    // 刷新列表数据
})
Nach dem Login kopieren

Dann löst die Betätigung des Collect-Ereignisses auf SeiteA den CollectChange-Rückruf seiner eigenen Seite aus. Zu diesem Zeitpunkt ist nsevent praktisch,

Deklarieren Sie es so auf SeiteA

// 收藏事件改变
nsevent.on('collectChange', () => {
    // 刷新列表数据
}, 'pageA')
Nach dem Login kopieren

Das Auslösen des Ereignisses von SeiteA auf SeiteB löst nicht den Rückruf der eigenen Seite aus

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA'] });
Nach dem Login kopieren

Sie können auch das CollectChange-Ereignis von SeiteA und SeiteB auf SeiteC auslösen

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA', 'pageB'] });
Nach dem Login kopieren

nsevent document

Event-Emitter mit Namespace

Installation und Verwendung

npm i nsevent --save
Nach dem Login kopieren
const nsevent = require('nsevent');
Nach dem Login kopieren
// 浏览器
<script src="dist/nsevent.umd.js"></script>
Nach dem Login kopieren

on(eventName, fn, namespace)

参数 必选 说明
eventName 监听事件名
fn 回调函数
namespace 命名空间
NSEvent.on('add', (a, b) => {
  console.log(a, b);
});

NSEvent.on('add', (a, b) => {
  console.log(a, b, 'ns');
}, 'ns');

// 1, 2
// 1, 2, 'ns'
NSEvent.emit('add', a, b);
Nach dem Login kopieren

once(eventName, fn)

参数 必选 说明
eventName 监听事件名
fn 回调函数
NSEvent.once('add', (a, b) => {
  console.log(a, b);
});

NSEvent.emit('add', 1, 2);      // 1, 2
NSEvent.emit('add', 1, 2);      // nothing
Nach dem Login kopieren

emit(eventName, arg1, arg2, ..., object)

参数 必选 说明
eventName 监听事件名
arg[1,2,3...] 传递给回调函数的值
object { 最后一个传递对象,ns: ['ns'] } 可以指定命名空间触发事件
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');

NSEvent.on('fire', () => {
  console.log('fire ns2');
}, 'ns');

NSEvent.on('fire', () => {
  console.log('fire');
});

NSEvent.emit('fire');     // fire ns, fire ns2, fire
console.log("======");
NSEvent.emit('fire', 1, 2, { ns: [] });     // nothing
NSEvent.emit('fire', 1, 2, { ns: ['ns'] }); // fire ns, fire ns2
Nach dem Login kopieren

off(eventName, [string|function|array])

参数 必选 说明

eventName 监听事件名

string function array 解绑回调函数

string 指定命名空间解绑


function 指定函数解绑


array 通过数组指定命名空间或者函数解绑

const NSEvent = require('../dist/nsevent.cjs');
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
  console.log('fire1');
}, 'ns1');
NSEvent.emit('fire');   // fire ns, fire ns, fire1
console.log('==========');
NSEvent.off('fire', ['ns']);
NSEvent.emit('fire');   // fire1
console.log('==========');
NSEvent.off('fire', 'ns1');
NSEvent.emit('fire');   // none
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Namespace-Ereignis-Listener nsevent (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage