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

发布于 2022-09-07 22:12:08 字数 1296 浏览 9 评论 0

在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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

计㈡愣 2022-09-14 22:12:08

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文