PubSub体系结构实现了一个脱节的范例,订阅者仅在事件发布时进行监听。
但是在某些情况下,我们希望维持事件的多个侦听器/订阅者,尽管希望根据事件发布时订阅者的反应来采取行动。
让我们考虑一种情况,网页上有多个组件,用户可以更改其状态,并且让每个组件作为侦听器订阅以侦听页面转换,以便我们可以检查用户是否尝试离开页面而不保存数据。

现在,当用户单击链接时,我们将发布一个事件,以提及用户从页面的转换,尽管我们想询问每个侦听器(或组件)用户是否对其状态进行了任何更改并且在移动时不保存它们。
如果任何组件中有未保存的更改,则我们取消转换,而是向用户显示一个信息对话框,要求他保存信息,然后再继续。

AsyncResolver.js是满足此需求的解决方案,它是pub子体系结构的融合,并有望在异步环境中提供决策能力。
### NPM
npm安装异步解析器
###纱线
纱线添加异步解析器
const AsyncResolver = require('async-resolver'); let resolver = new AsyncResolver();
resolver.subscribe('locationChange',()=> Promise.resolve());
resolver.subscribe('locationChange',()=> Promise.reject());解析器
.publish('locationChange',{
promiseMethod:'任何'
})
.then(()=> console.log('允许更改位置'))
.catch(()=> console.log('位置更改被拒绝'))//输出: 位置更改被拒绝
有关更多详细信息,请在Github上检出AsyncResolver.js