0.0.4 • Published 4 years ago
@retailwe/common-libs-status v0.0.4
Status 状态机
在原生的小程序启动流程中,因为无论 app,page,component 的生命周期钩子函数,都不支持异步阻塞。
但是实际项目中,我们有大量的类似的实际场景需要满足:登录态的初始化,全局数据的初始化等等。
Status 基于事件驱动,来满足这一类的需求。
一个状态机,有四种状态:
- 未开始:un start (为状态机的初始态)
- 进行中:ing
- 成功:success
- 失败:fail
实例的 api 主要分三类:
- 状态改变
- 状态监听
- 状态判断
安装
yarn add '@retailwe/common-libs-status' --save-exact
使用
import { Status } from '@retailwe/common-libs-status';
// on app.js
App({
status: {
bootstrap: new Status('bootstrap');
},
onLaunch() {
API
.fetch('xxx')
.then(data => this.globalData = data)
// 把状态机设置为 success
.then(() => this.status.bootstrap.success());
},
});
// on page.js
Page({
onLoad() {
getApp()
.status.bootstrap
// 监听一次成功状态事件
.onceSuccess(() => {
const globalData = getApp().globalData;
if (globaleData) this.initPage(globalData);
});
},
});