loadScene之后回调,getScene().name仍然返回上一个场景的名字?

如题
新建2个场景,Scene_1,Scene_2,
Scene_1启动时执行:

cc.game.addPersistRootNode(this.node);
cc.director.loadScene(“Scene_2”,this.onSceneLoaded());

onSceneLoaded(){
        let sceneName = cc.director.getScene().name;
        console.log(sceneName);
},

这时打印出来的sceneName仍然是 Scene_1,

但是,把加载场景代码独立到另一个类并挂载组件,由其他类调用时,
就不会出错,如下:

var curLoadSceneName;
var thisPrototype;
cc.Class({
    extends: cc.Component,
    properties: {
    },
    onLoad()
    {
        thisPrototype = this;
    },
    //加载场景
    loadScene(sceneName)
    {
        //cc.log("sm收到的场景名:"+sceneName);
        curLoadSceneName = sceneName;
        cc.director.preloadScene(sceneName,this.onSceneLoaded);
    },
    //加载场景完成
    onSceneLoaded()
    {
        cc.director.loadScene(curLoadSceneName,thisPrototype.onSceneLoaded_SceneManager);
    },
    //自己监听加载完毕事件,把事件抛出
    onSceneLoaded_SceneManager()
    {
        thisPrototype.node.dispatchEvent(new cc.Event.EventCustom('CMD_SceneWasLoaded', true));
    }
});

这时他爹调用loadScene(“Scene_2”);
并监听“CMD_SceneWasLoaded”
打印:cc.director.getScene().name;
得到的就是Scene_2

我也不知道为啥。