看到一个面试题,原生小程序中api的调用,都是回掉函数,怎么处理成优雅的链式调用呢?

那肯定是通过promise 封装起来啊,怎么封装呢?很简单,代码如下

/** * * promisify化api * * @param {string} swan 小程序(swan, wx等) * @param {string} method api名字 * @param {object} options api参数 * @return {function(*=): Promise<*>} promisify的api */ export default const promisify = swan => method => 。options => new Promise((resolve, reject) => { if (!swan[method]) { reject(); } swan[method]({ ...options, success: res => resolve(res), fail: err => reject(err) }); });

封装起来很简单,我想把封装好的东西,可以让其他人公用,但是不想每次需要用的时候都要手动copy代码,怎么办呢?网上有很多教程,我这边记录一下我选用的cnpm搭建的过程

通过cnpm搭建自己的私仓库

1.安装

npm install -g --build-from-source cnpmjs.org cnpm sqlite3 # 如果报错或者警告通过下面方式安装 npm install -g --unsafe-perm --verbose --build-from-source cnpmjs.org cnpm sqlite3

怎样安装cnpm(通过cnpm搭建自己的私仓库)(1)

安装响应的包

2.启动并配置服务

// 管理员:eric@baidu.com // 范围:@duer // 默认端口:7001-registry, 7002-web nohup cnpmjs.org start --admins='10xxxxxx@qq.com' --scopes='@duer'

怎样安装cnpm(通过cnpm搭建自己的私仓库)(2)

配置并启动服务

3.设置注册地址

将cnpm默认注册地址更改为私有注册地址

cnpm set registry http://localhost:7001

4.登录cnpm

怎样安装cnpm(通过cnpm搭建自己的私仓库)(3)

注册,登录

5.创建上传到私有库

把开头我们promisify的文件,上传到我们的私有库

cnpm publish

怎样安装cnpm(通过cnpm搭建自己的私仓库)(4)

上传到私有库

6.预览我们的包

浏览器预览我们的包

open http://localhost:7002/@duer/promisify

怎样安装cnpm(通过cnpm搭建自己的私仓库)(5)

浏览器自动打开这个页面,是不是很熟悉

7.安装

cnpm install @duer/promisify

好了,就到这里了。

注: 既然已经封装好了,就把连接贴出来吧

https://github.com/airwaycai/promisify/blob/master/index.ts

,