这里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
相似问题