mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-02-01 15:23:03 +00:00
optimize think.hook.exec method
This commit is contained in:
parent
8f341c6de7
commit
dc5049f00b
@ -705,28 +705,51 @@ think.hook.set = (name, hooks, flag) => {
|
||||
* @param {Mixed} data []
|
||||
* @return {Promise} []
|
||||
*/
|
||||
// think.hook.exec = async (name, http, data) => {
|
||||
// //exec hook
|
||||
// let list = thinkData.hook[name];
|
||||
// if (!list || list.length === 0) {
|
||||
// return Promise.resolve(data);
|
||||
// }
|
||||
|
||||
// let length = list.length;
|
||||
// for(let i = 0; i < length; i++){
|
||||
// let result = await think.middleware.exec(list[i], http, data);
|
||||
// //prevent next middlewares invoked in hook
|
||||
// if(result === null){
|
||||
// break;
|
||||
// }else if (result !== undefined) {
|
||||
// data = result;
|
||||
// }
|
||||
// }
|
||||
// return data;
|
||||
// };
|
||||
|
||||
let _execItemMiddleware = (list, index, http, data) => {
|
||||
let item = list[index];
|
||||
if(!item){
|
||||
return data;
|
||||
}
|
||||
return think.middleware.exec(item, http, data).then(result => {
|
||||
if(result === null){
|
||||
return data;
|
||||
}else if(result !== undefined){
|
||||
data = result;
|
||||
}
|
||||
return _execItemMiddleware(list, index + 1, http, data);
|
||||
});
|
||||
};
|
||||
|
||||
think.hook.exec = async (name, http, data) => {
|
||||
//exec hook
|
||||
let list = thinkData.hook[name];
|
||||
if (!list || list.length === 0) {
|
||||
return Promise.resolve(data);
|
||||
}
|
||||
|
||||
let length = list.length;
|
||||
for(let i = 0; i < length; i++){
|
||||
let result = await think.middleware.exec(list[i], http, data);
|
||||
//prevent next middlewares invoked in hook
|
||||
if(result === null){
|
||||
break;
|
||||
}else if (result !== undefined) {
|
||||
data = result;
|
||||
}
|
||||
}
|
||||
return data;
|
||||
return _execItemMiddleware(list, 0, http, data);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* create or exec middleware
|
||||
* @param {Function} superClass []
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user