在这里就用 block 方式，逻辑更加清晰一些