0.0.4 • Published 4 years ago

@retailwe/common-libs-status v0.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

Status 状态机

在原生的小程序启动流程中,因为无论 app,page,component 的生命周期钩子函数,都不支持异步阻塞。

但是实际项目中,我们有大量的类似的实际场景需要满足:登录态的初始化,全局数据的初始化等等。

Status 基于事件驱动,来满足这一类的需求。

npm.io

一个状态机,有四种状态:

  • 未开始: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);
            });
    },
});

单元测试覆盖率

单元测试覆盖率