请教为何需要做isArray的判断。

来源:9-5 [第 2 次迭代] 分拆项目服务层与路由层对外暴露 API 服务

YangLeiLei

2018-08-01

init() {
    // ....
    for (let [conf, controller] of routerMap) {
      // todo 不太理解为什么可能是数组 => target[key]
      // console.log("查看:" + controller)
      const controllers = isArray(controller)
    }
    // ....

因为设置routerMap的时候我们是:

// console.log("key:" + key) key是装饰器修饰的方法名
routerMap.set({
    target,
    ...conf,
  }, target[key])
 // 我认为就是target上面的单一方法 什么情况会是array?

到后面的:

this.router[conf.method](routerPath, ...controllers)


写回答

1回答

Scott

2018-08-01

你可以看下文件顶部的 isArray 的实现,这里其实名字改成 toArray 比较合适,只是把 controller 转成了 array 而已。

0
1
YangLeiLei
谢谢Scott回答。 可能是我没表达清楚我的疑惑:我困惑的是就是`controller`为何要去转成数组。因为我理解`let [conf, controller] of routerMap` 中controller其实也就是我们修饰器所修饰的方法体。在路由中注册`this.router[conf.method](routerPath, controller)`就可以了而不是`this.router[conf.method](routerPath, ...controllers)`。(如果是兼容写法我就不纠结了)可老师在视频中说可能controller会是个数组,我有点困惑这个。
2018-08-02
共1条回复

Koa2框架从0开始构建预告片网站

Koa2+MongoDB+Parcel+Puppeteer+AntDesign快速搭建预告片网站

751 学习 · 362 问题

查看课程