今天用typescript
写了个Generator
函数自动执行器:
export function runGenAuto(fn: Function) {
let gen: Generator<Function> = fn()
function next() {
let result = gen.next()
if (result.done) {
return result.value
}
return result.value(next)
}
return next();
}
为了测试效果,我们定义一个Generator
函数,这个函数用于将URLSearchParams
转换成一般对象
当然直接遍历不用generator
也能实现上述需求,但这里主要是为了测上方的自动执行Generator
函数的效果
interface Param {
[key: string]: any
}
export function* transferToObj(params: URLSearchParams) {
let result: Param = {};
for (let [key, value] of params.entries()) {
yield (next: Function) => next(result[key] = value)
}
return result
}
使用时传入对应的Thunk
函数即可
let params = runGenAuto(() => transferToObj(new URLSearchParams("q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4")))
console.log(params)
打印结果: