在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:mroderick/PubSubJS开源软件地址:https://github.com/mroderick/PubSubJS开源编程语言:JavaScript 94.5%开源软件介绍:PubSubJS is a topic-based publish/subscribe library written in JavaScript. PubSubJS has synchronisation decoupling, so topics are published asynchronously. This helps keep your program predictable as the originator of topics will not be blocked while consumers process them. For the adventurous, PubSubJS also supports synchronous topic publication. This can give a speedup in some environments (browsers, not all), but can also lead to some very difficult to reason about programs, where one topic triggers publication of another topic in the same execution chain. Single processPubSubJS is designed to be used within a single process, and is not a good candidate for multi-process applications (like Node.js – Cluster with many sub-processes). If your Node.js app is a single process app, you're good. If it is (or is going to be) a multi-process app, you're probably better off using redis Pub/Sub or similar Key features
Getting PubSubJSThere are several ways of getting PubSubJS
Note: the last version of this library available via bower is v1.5.4 ExamplesFirst you have to import the module: import PubSub from 'pubsub-js'
// or when using CommonJS
const PubSub = require('pubsub-js'); Basic example// create a function to subscribe to topics
var mySubscriber = function (msg, data) {
console.log( msg, data );
};
// add the function to the list of subscribers for a particular topic
// we're keeping the returned token, in order to be able to unsubscribe
// from the topic later on
var token = PubSub.subscribe('MY TOPIC', mySubscriber);
// publish a topic asynchronously
PubSub.publish('MY TOPIC', 'hello world!');
// publish a topic synchronously, which is faster in some environments,
// but will get confusing when one topic triggers new topics in the
// same execution chain
// USE WITH CAUTION, HERE BE DRAGONS!!!
PubSub.publishSync('MY TOPIC', 'hello world!'); Cancel specific subscription// create a function to receive the topic
var mySubscriber = function (msg, data) {
console.log(msg, data);
};
// add the function to the list of subscribers to a particular topic
// we're keeping the returned token, in order to be able to unsubscribe
// from the topic later on
var token = PubSub.subscribe('MY TOPIC', mySubscriber);
// unsubscribe this subscriber from this topic
PubSub.unsubscribe(token); Cancel all subscriptions for a function// create a function to receive the topic
var mySubscriber = function(msg, data) {
console.log(msg, data);
};
// unsubscribe mySubscriber from ALL topics
PubSub.unsubscribe(mySubscriber); Clear all subscriptions for a topicPubSub.subscribe('a', myFunc1);
PubSub.subscribe('a.b', myFunc2);
PubSub.subscribe('a.b.c', myFunc3);
PubSub.unsubscribe('a.b');
// no further notifications for 'a.b' and 'a.b.c' topics
// notifications for 'a' will still get published Clear all subscriptionsPubSub.clearAllSubscriptions();
// all subscriptions are removed Get SubscriptionsPubSub.getSubscriptions('token');
// subscriptions by token from all topics Count SubscriptionsPubSub.countSubscriptions('token');
// count by token from all topics Error Handling// isPublished is a boolean that represents if any subscribers was registered for this topic
var isPublished = PubSub.publish('a');
// token will be false if something went wrong and subscriber was not registered
var token = PubSub.subscribe('MY TOPIC', mySubscriber); Hierarchical addressing// create a subscriber to receive all topics from a hierarchy of topics
var myToplevelSubscriber = function (msg, data) {
console.log('top level: ', msg, data);
}
// subscribe to all topics in the 'car' hierarchy
PubSub.subscribe('car', myToplevelSubscriber);
// create a subscriber to receive only leaf topic from hierarchy op topics
var mySpecificSubscriber = function (msg, data) {
console.log('specific: ', msg, data);
}
// subscribe only to 'car.drive' topics
PubSub.subscribe('car.drive', mySpecificSubscriber);
// Publish some topics
PubSub.publish('car.purchase', {name: 'my new car'});
PubSub.publish('car.drive', {speed: '14'});
PubSub.publish('car.sell', {newOwner: 'someone else'});
// In this scenario, myToplevelSubscriber will be called for all
// topics, three times in total
// But, mySpecificSubscriber will only be called once, as it only
// subscribes to the 'car.drive' topic TipsUse "constants" for topics and not string literals. PubSubJS uses strings as topics, and will happily try to deliver your topics with ANY topic. So, save yourself from frustrating debugging by letting the JavaScript engine complain when you make typos. Example of use of "constants"全部评论
专题导读
上一篇:jamesqquick/Build-A-Quiz-App-With-HTML-CSS-and-JavaScript: Build a Quiz App with ...发布时间:2022-07-07下一篇:facebookarchive/connect-js: Legacy JavaScript SDK发布时间:2022-07-07热门推荐
热门话题
阅读排行榜
|
请发表评论