加入各种验证，还存在异步的问题，明天加入async