在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);
      });
    }
  });
}

运行结果:

clipboard.png

阅读 4.3k
2 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题