猿问

在Promise中, 不管resolve在哪个位置, 都是最后才执行吗?

在Promise中, 不管resolve在哪个位置, 都是最后才执行吗? 谁能讲讲里面的运行机制,或者分享个链接... 感谢! 

代码如下:


actions.getForbiddenFuncList = function(context){

  return new Promise((resolve, reject) => {

    serverUtils.getData(serverUtils.GETFORBIDDENFUNCLIST,null,(resData)=>{

      if(resData.success){

        resolve();

        console.log('1')

        context.commit('SETFORBIDEENFUNCLIST', resData)

        console.log('2')

        console.log('3')

      }

    });

  })

}

mutations.SETFORBIDEENFUNCLIST = function (state, data) {

    console.log('SETFORBIDEENFUNCLIST, 1');

    // 业务逻辑,没有异步操作.....

    console.log('SETFORBIDEENFUNCLIST, 2');

}

actions.initData = function(context,payload) {

  actions.loadControl(context,{ show: true });

  serverUtils.getData(serverUtils.GETBYID,{id: payload.id},function(data) {

    if (data.success) {

      actions.getForbiddenFuncList(context).then(() => {

        console.log('a')

        context.commit('INITDATA', data.data);

        console.log('b')

        actions.getQuestionData(context,data.data.questionUrl);

        actions.checkSliceUpdate(context,payload);

      });

    }

  });

}

运行结果:

九州编程
浏览 2437回答 2
2回答

慕的地10843

不是resolve最后执行,是执行完这堆同步代码,才轮到event loop去检测microtask。Js 的事件循环

三国纷争

js 事件循环了解一下
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答