这里dispatch.bind(null)有什么用吗
来源:11-11 中间件原理-代码演示
 
			crazyones110
2019-11-30
老师您好,我有两个问题
// 组合中间件
function compose (middlewareList) {
  return function (ctx) {
    // 中间件调用
    function dispatch (i) {
      const fn = middlewareList[i] // 就是某一个中间件函数,async function
      try {
        return Promise.resolve(
          fn(ctx, dispatch.bind(null, i + 1)) // fn 都是 async 函数,返回的都是 Promise
        )
      } catch (err) {
        return Promise.reject(err)
      }
    }
    return dispatch(0)
  }
}
- 这里的 dispatch函数里面没用到this,为什么还要 bind null
- dispatch.bind(null, i + 1)这样的话- i最后不会越过- middlewareList的界吗
写回答
	1回答
- 
				
				第一,这里的 this 没有什么作用,不信你可以打印看看 this 值。再者,无论 express 和 koa ,中间件都是通过 req res 或者 ctx 作为核心数据进行通讯的,没有通过 this 的。 第二,据调用过程,应该不会越界。但是为了代码健壮性,加一个放错判断也可以呀。 032019-12-03
相似问题
